Skip to content

ci: replace package workflows with Dagger gate - #25

Open
kingwill101 wants to merge 13 commits into
masterfrom
chore/release-hardening-ci
Open

ci: replace package workflows with Dagger gate#25
kingwill101 wants to merge 13 commits into
masterfrom
chore/release-hardening-ci

Conversation

@kingwill101

Copy link
Copy Markdown
Owner

Summary

  • Replace package and dashboard test workflows with one Dagger-backed aggregate gate.
  • Pin Dart, Flutter, and Task tooling for reproducible local and CI runs.
  • Keep disposable PostgreSQL, Redis, TLS, browser, and Flutter test setup inside the Dagger module.
  • Add task test:all and make task test:dagger run the complete gate.
  • Remove the obsolete Docker Compose test-service action and redundant workflows.

Validation

  • ./tool/dagger_test.sh all
  • Dagger Dart gate: passed
  • Dagger Flutter gate: passed
  • go test ./... in .dagger: passed
  • bash -n tool/dagger_test.sh: passed
  • Worktree clean

This is a draft PR to observe the GitHub Actions run.

@coderabbitai

coderabbitai Bot commented Aug 20, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 377 files, which is 277 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 7b3f8d63-b976-4110-8072-f083bc1f647f

📥 Commits

Reviewing files that changed from the base of the PR and between 9176607 and 069fe6a.

⛔ Files ignored due to path filters (1)
  • .dagger/go.sum is excluded by !**/*.sum
📒 Files selected for processing (377)
  • .dagger/.gitattributes
  • .dagger/.gitignore
  • .dagger/LICENSE
  • .dagger/dagger.json
  • .dagger/go.mod
  • .dagger/main.go
  • .github/actions/setup-test-services/action.yaml
  • .github/workflows/aggregate.yaml
  • .github/workflows/benchmarks.yaml
  • .github/workflows/dashboard.yaml
  • .github/workflows/docusaurus-site.yaml
  • .github/workflows/publish.yaml
  • .github/workflows/stem.yaml
  • .github/workflows/stem_cli.yaml
  • .github/workflows/stem_flutter.yaml
  • .github/workflows/stem_flutter_sqlite.yaml
  • .github/workflows/stem_memory.yaml
  • .github/workflows/stem_postgres.yaml
  • .github/workflows/stem_redis.yaml
  • .github/workflows/stem_sqlite.yaml
  • .gitignore
  • .site/docs/about/index.md
  • .site/docs/about/roadmap.md
  • .site/docs/about/testing.md
  • .site/docs/brokers/caveats.md
  • .site/docs/brokers/sqlite.md
  • .site/docs/core-concepts/canvas.md
  • .site/docs/core-concepts/cli-control.md
  • .site/docs/core-concepts/observability.md
  • .site/docs/core-concepts/producer.md
  • .site/docs/core-concepts/rate-limiting.md
  • .site/docs/core-concepts/stem-builder.md
  • .site/docs/core-concepts/tasks.md
  • .site/docs/getting-started/first-steps.md
  • .site/docs/getting-started/intro.md
  • .site/docs/getting-started/production-checklist.md
  • .site/docs/getting-started/reliability.md
  • .site/docs/scheduler/index.md
  • .site/docs/workers/worker-control.md
  • .site/docs/workflows/errors-retries-and-idempotency.md
  • .site/docs/workflows/getting-started.md
  • .site/sidebars.ts
  • CONTRIBUTING.md
  • README.md
  • SECURITY.md
  • Taskfile.yml
  • benchmark/README.md
  • benchmark/stem_throughput.dart
  • benchmark/stem_throughput_baseline.json
  • packages/dashboard/Taskfile.yml
  • packages/dashboard/lib/src/server.dart
  • packages/dashboard/lib/src/services/stem_service.dart
  • packages/dashboard/pubspec.yaml
  • packages/stem/.pubignore
  • packages/stem/CHANGELOG.md
  • packages/stem/README.md
  • packages/stem/doc/design/stem-v1.md
  • packages/stem/doc/internal/about/index.md
  • packages/stem/doc/internal/about/roadmap.md
  • packages/stem/doc/internal/deployment/ci-cd.md
  • packages/stem/doc/internal/deployment/deployment-hardening.md
  • packages/stem/doc/internal/deployment/release-process.md
  • packages/stem/doc/internal/operations/operations-guide.md
  • packages/stem/doc/internal/operations/testing-guide.md
  • packages/stem/doc/process/observability-runbook.md
  • packages/stem/doc/process/roadmap.md
  • packages/stem/doc/process/security-checklist.md
  • packages/stem/doc/process/security-examples.md
  • packages/stem/doc/process/security-runbook.md
  • packages/stem/doc/process/stem-signals.md
  • packages/stem/doc/process/testing.md
  • packages/stem/doc/process/worker-control.md
  • packages/stem/example/annotated_workflows/bin/main.dart
  • packages/stem/example/annotated_workflows/lib/definitions.stem.g.dart
  • packages/stem/example/canvas_patterns/chain_example.dart
  • packages/stem/example/canvas_patterns/chord_example.dart
  • packages/stem/example/canvas_patterns/group_example.dart
  • packages/stem/example/docs_snippets/lib/best_practices.dart
  • packages/stem/example/docs_snippets/lib/brokers.dart
  • packages/stem/example/docs_snippets/lib/canvas_batch.dart
  • packages/stem/example/docs_snippets/lib/canvas_chain.dart
  • packages/stem/example/docs_snippets/lib/canvas_chord.dart
  • packages/stem/example/docs_snippets/lib/canvas_group.dart
  • packages/stem/example/docs_snippets/lib/first_steps.dart
  • packages/stem/example/docs_snippets/lib/namespaces.dart
  • packages/stem/example/docs_snippets/lib/observability.dart
  • packages/stem/example/docs_snippets/lib/persistence.dart
  • packages/stem/example/docs_snippets/lib/producer.dart
  • packages/stem/example/docs_snippets/lib/quick_start.dart
  • packages/stem/example/docs_snippets/lib/quick_start_failure.dart
  • packages/stem/example/docs_snippets/lib/rate_limiting.dart
  • packages/stem/example/docs_snippets/lib/retry_backoff.dart
  • packages/stem/example/docs_snippets/lib/scheduler.dart
  • packages/stem/example/docs_snippets/lib/signing.dart
  • packages/stem/example/docs_snippets/lib/tasks.dart
  • packages/stem/example/docs_snippets/lib/troubleshooting.dart
  • packages/stem/example/docs_snippets/lib/uniqueness.dart
  • packages/stem/example/docs_snippets/lib/worker_control.dart
  • packages/stem/example/docs_snippets/lib/workers_programmatic.dart
  • packages/stem/example/docs_snippets/pubspec.yaml
  • packages/stem/example/durable_watchers.dart
  • packages/stem/example/ecommerce/README.md
  • packages/stem/example/ecommerce/lib/src/database/orm_registry.g.dart
  • packages/stem/example/ecommerce/lib/src/workflows/annotated_defs.stem.g.dart
  • packages/stem/example/ecommerce/pubspec.yaml
  • packages/stem/example/flutter_stem_example/analysis_options.yaml
  • packages/stem/example/flutter_stem_example/lib/main.dart
  • packages/stem/example/flutter_stem_example/lib/src/queue_monitor_page.dart
  • packages/stem/example/flutter_stem_example/lib/src/worker/worker_isolate.dart
  • packages/stem/example/flutter_stem_example/pubspec.yaml
  • packages/stem/example/microservice/.certs/ca.crt
  • packages/stem/example/microservice/.certs/ca.key
  • packages/stem/example/microservice/.certs/client.crt
  • packages/stem/example/microservice/.certs/client.key
  • packages/stem/example/microservice/.certs/server.crt
  • packages/stem/example/microservice/.certs/server.key
  • packages/stem/example/microservice/certs/ca.crt
  • packages/stem/example/microservice/certs/ca.key
  • packages/stem/example/microservice/certs/client.crt
  • packages/stem/example/microservice/certs/client.key
  • packages/stem/example/microservice/certs/server.crt
  • packages/stem/example/microservice/certs/server.key
  • packages/stem/example/microservice/worker/bin/worker.dart
  • packages/stem/example/monolith_service/bin/service.dart
  • packages/stem/example/persistent_sleep.dart
  • packages/stem/example/postgres_tls/README.md
  • packages/stem/example/postgres_tls/Taskfile.yml
  • packages/stem/example/quality_gates/README.md
  • packages/stem/example/quality_gates/justfile
  • packages/stem/example/rate_limit_delay/README.md
  • packages/stem/example/rate_limit_delay/lib/rate_limiter.dart
  • packages/stem/example/rate_limit_delay/lib/shared.dart
  • packages/stem/example/retry_task/bin/worker.dart
  • packages/stem/example/routing_parity/bin/worker.dart
  • packages/stem/example/signals_demo/bin/worker.dart
  • packages/stem/example/stem_example.dart
  • packages/stem/example/task_context_mixed/lib/shared.dart
  • packages/stem/example/task_usage_patterns.dart
  • packages/stem/example/unique_tasks/unique_task_example.dart
  • packages/stem/example/workflows/basic_in_memory.dart
  • packages/stem/example/workflows/cancellation_policy.dart
  • packages/stem/example/workflows/runtime_metadata_views.dart
  • packages/stem/example/workflows/sleep_and_event.dart
  • packages/stem/example/workflows/versioned_rewind.dart
  • packages/stem/lib/advanced.dart
  • packages/stem/lib/memory.dart
  • packages/stem/lib/observability.dart
  • packages/stem/lib/src/backend/encoding_result_backend.dart
  • packages/stem/lib/src/bootstrap/factories.dart
  • packages/stem/lib/src/bootstrap/stem_app.dart
  • packages/stem/lib/src/bootstrap/stem_client.dart
  • packages/stem/lib/src/bootstrap/workflow_app.dart
  • packages/stem/lib/src/canvas/canvas.dart
  • packages/stem/lib/src/control/control_messages.dart
  • packages/stem/lib/src/core/chord_metadata.dart
  • packages/stem/lib/src/core/chord_policy.dart
  • packages/stem/lib/src/core/contracts.dart
  • packages/stem/lib/src/core/function_task_handler.dart
  • packages/stem/lib/src/core/queue_events.dart
  • packages/stem/lib/src/core/stem.dart
  • packages/stem/lib/src/core/task_invocation.dart
  • packages/stem/lib/src/memory.dart
  • packages/stem/lib/src/memory/backend/in_memory_backend.dart
  • packages/stem/lib/src/memory/brokers/in_memory_broker.dart
  • packages/stem/lib/src/memory/control/in_memory_revoke_store.dart
  • packages/stem/lib/src/memory/memory_factories.dart
  • packages/stem/lib/src/memory/scheduler/in_memory_lock_store.dart
  • packages/stem/lib/src/memory/scheduler/in_memory_schedule_store.dart
  • packages/stem/lib/src/memory/workflow/event_bus/in_memory_event_bus.dart
  • packages/stem/lib/src/memory/workflow/store/in_memory_workflow_store.dart
  • packages/stem/lib/src/observability/logging.dart
  • packages/stem/lib/src/observability/logging_api.dart
  • packages/stem/lib/src/observability/logging_types.dart
  • packages/stem/lib/src/observability/metrics.dart
  • packages/stem/lib/src/observability/tracing.dart
  • packages/stem/lib/src/scheduler/beat.dart
  • packages/stem/lib/src/worker/README.md
  • packages/stem/lib/src/worker/worker.dart
  • packages/stem/lib/src/worker/worker_acknowledgement.dart
  • packages/stem/lib/src/worker/worker_consumer_loop.dart
  • packages/stem/lib/src/worker/worker_delivery_tracker.dart
  • packages/stem/lib/src/worker/worker_execution_supervisor.dart
  • packages/stem/lib/src/worker/worker_lease_coordinator.dart
  • packages/stem/lib/src/workflow/runtime/workflow_runtime.dart
  • packages/stem/lib/src/workflow/workflow.dart
  • packages/stem/lib/stable.dart
  • packages/stem/lib/stem.dart
  • packages/stem/pubspec.yaml
  • packages/stem/spec.md
  • packages/stem/test/api/observability_api_test.dart
  • packages/stem/test/api/stable_api_test.dart
  • packages/stem/test/bootstrap/module_bootstrap_test.dart
  • packages/stem/test/bootstrap/shortcut_allow_auto_start_test.dart
  • packages/stem/test/bootstrap/stem_app_test.dart
  • packages/stem/test/bootstrap/stem_client_test.dart
  • packages/stem/test/bootstrap/stem_stack_test.dart
  • packages/stem/test/performance/throughput_test.dart
  • packages/stem/test/soak/soak_test.dart
  • packages/stem/test/unit/backend/encoding_result_backend_test.dart
  • packages/stem/test/unit/backend/in_memory_backend_test.dart
  • packages/stem/test/unit/canvas/canvas_test.dart
  • packages/stem/test/unit/core/contracts_test.dart
  • packages/stem/test/unit/core/fake_stem_test.dart
  • packages/stem/test/unit/core/function_task_handler_test.dart
  • packages/stem/test/unit/core/queue_broker_test.dart
  • packages/stem/test/unit/core/queue_events_test.dart
  • packages/stem/test/unit/core/stem_core_test.dart
  • packages/stem/test/unit/core/stem_enqueue_options_test.dart
  • packages/stem/test/unit/core/stem_unique_task_test.dart
  • packages/stem/test/unit/core/task_invocation_test.dart
  • packages/stem/test/unit/core/task_registry_test.dart
  • packages/stem/test/unit/core/unique_task_coordinator_test.dart
  • packages/stem/test/unit/observability/logging_test.dart
  • packages/stem/test/unit/observability/metrics_integration_test.dart
  • packages/stem/test/unit/redis_components_test.dart
  • packages/stem/test/unit/scheduler/beat_test.dart
  • packages/stem/test/unit/scheduler/lock_store_test.dart
  • packages/stem/test/unit/scheduler/schedule_store_test.dart
  • packages/stem/test/unit/security/signing_test.dart
  • packages/stem/test/unit/signals/middleware_test.dart
  • packages/stem/test/unit/signals/payloads_test.dart
  • packages/stem/test/unit/tracing/tracing_test.dart
  • packages/stem/test/unit/worker/task_context_enqueue_integration_test.dart
  • packages/stem/test/unit/worker/task_retry_policy_test.dart
  • packages/stem/test/unit/worker/worker_delivery_tracker_test.dart
  • packages/stem/test/unit/worker/worker_execution_supervisor_test.dart
  • packages/stem/test/unit/worker/worker_lease_coordinator_test.dart
  • packages/stem/test/unit/worker/worker_test.dart
  • packages/stem/test/unit/workflow/in_memory_event_bus_test.dart
  • packages/stem/test/workflow/workflow_runtime_call_extensions_test.dart
  • packages/stem/test/workflow/workflow_runtime_ref_test.dart
  • packages/stem/test/workflow/workflow_runtime_test.dart
  • packages/stem/test/workflow/workflow_store_contract_test.dart
  • packages/stem/tool/proxy_runtime_check.dart
  • packages/stem_adapter_tests/CHANGELOG.md
  • packages/stem_adapter_tests/lib/src/workflow_script_facade_suite.dart
  • packages/stem_adapter_tests/lib/src/workflow_store_contract_suite.dart
  • packages/stem_adapter_tests/pubspec.yaml
  • packages/stem_adapter_tests/test/queue_events_contract_suite_test.dart
  • packages/stem_adapter_tests/test/revoke_store_contract_suite_test.dart
  • packages/stem_builder/CHANGELOG.md
  • packages/stem_builder/README.md
  • packages/stem_builder/example/bin/main.dart
  • packages/stem_builder/example/bin/runtime_metadata_views.dart
  • packages/stem_builder/example/lib/definitions.dart
  • packages/stem_builder/example/lib/definitions.stem.g.dart
  • packages/stem_builder/example/pubspec.yaml
  • packages/stem_builder/lib/src/stem_registry_builder.dart
  • packages/stem_builder/pubspec.yaml
  • packages/stem_builder/test/stem_registry_builder_test.dart
  • packages/stem_cli/.pubignore
  • packages/stem_cli/CHANGELOG.md
  • packages/stem_cli/_init_test_env
  • packages/stem_cli/docker/testing/README.md
  • packages/stem_cli/docker/testing/TESTING.md
  • packages/stem_cli/docker/testing/certs/postgres-root.crt
  • packages/stem_cli/docker/testing/generate_certs.sh
  • packages/stem_cli/docker/testing/postgres/certs/root.crt
  • packages/stem_cli/docker/testing/postgres/certs/root.srl
  • packages/stem_cli/docker/testing/postgres/certs/server.cnf
  • packages/stem_cli/docker/testing/postgres/certs/server.crt
  • packages/stem_cli/docker/testing/postgres/certs/server.key
  • packages/stem_cli/lib/src/cli/dependencies.dart
  • packages/stem_cli/lib/src/cli/revoke_store_factory.dart
  • packages/stem_cli/lib/src/cli/schedule.dart
  • packages/stem_cli/lib/src/cli/utilities.dart
  • packages/stem_cli/lib/src/cli/worker.dart
  • packages/stem_cli/pubspec.yaml
  • packages/stem_cli/test/integration/cli/cli_health_integration_test.dart
  • packages/stem_cli/test/unit/cli/cli_schedule_test.dart
  • packages/stem_cli/test/unit/cli/cli_tasks_test.dart
  • packages/stem_cli/test/unit/cli/cli_worker_multi_test.dart
  • packages/stem_cli/test/unit/cli/cli_worker_stats_test.dart
  • packages/stem_cli/test/unit/cli/cli_worker_status_test.dart
  • packages/stem_cli/test/unit/cli/cli_workflow_agent_help_test.dart
  • packages/stem_cli/test/unit/cli/cli_workflow_test.dart
  • packages/stem_cli/test/unit/cli/dlq_cli_test.dart
  • packages/stem_cli/test/unit/cli/schedule_context_test.dart
  • packages/stem_flutter/CHANGELOG.md
  • packages/stem_flutter/README.md
  • packages/stem_flutter/analysis_options.yaml
  • packages/stem_flutter/pubspec.yaml
  • packages/stem_flutter/test/stem_flutter_queue_monitor_test.dart
  • packages/stem_flutter_sqlite/CHANGELOG.md
  • packages/stem_flutter_sqlite/README.md
  • packages/stem_flutter_sqlite/analysis_options.yaml
  • packages/stem_flutter_sqlite/pubspec.yaml
  • packages/stem_memory/CHANGELOG.md
  • packages/stem_memory/lib/stem_memory.dart
  • packages/stem_memory/pubspec.yaml
  • packages/stem_memory/test/unit/memory_factories_test.dart
  • packages/stem_postgres/CHANGELOG.md
  • packages/stem_postgres/README.md
  • packages/stem_postgres/lib/src/backend/postgres_backend.dart
  • packages/stem_postgres/lib/src/brokers/postgres_broker.dart
  • packages/stem_postgres/lib/src/database/datasource.dart
  • packages/stem_postgres/lib/src/database/migrations.dart
  • packages/stem_postgres/lib/src/database/migrations/m_20260819090000_add_task_outbox.dart
  • packages/stem_postgres/lib/src/database/migrations/m_20260819100000_add_rate_limit_buckets.dart
  • packages/stem_postgres/lib/src/database/migrations/m_20260820110000_add_lock_fencing_tokens.dart
  • packages/stem_postgres/lib/src/database/models/stem_broadcast_ack.orm.dart
  • packages/stem_postgres/lib/src/database/models/stem_broadcast_message.orm.dart
  • packages/stem_postgres/lib/src/database/models/stem_dead_letter.orm.dart
  • packages/stem_postgres/lib/src/database/models/stem_group.orm.dart
  • packages/stem_postgres/lib/src/database/models/stem_group_result.orm.dart
  • packages/stem_postgres/lib/src/database/models/stem_lock.dart
  • packages/stem_postgres/lib/src/database/models/stem_lock.orm.dart
  • packages/stem_postgres/lib/src/database/models/stem_queue_job.orm.dart
  • packages/stem_postgres/lib/src/database/models/stem_revoke_entry.orm.dart
  • packages/stem_postgres/lib/src/database/models/stem_schedule_entry.orm.dart
  • packages/stem_postgres/lib/src/database/models/stem_task_result.orm.dart
  • packages/stem_postgres/lib/src/database/models/stem_worker_heartbeat.orm.dart
  • packages/stem_postgres/lib/src/database/models/stem_workflow_run.orm.dart
  • packages/stem_postgres/lib/src/database/models/stem_workflow_step.orm.dart
  • packages/stem_postgres/lib/src/database/models/stem_workflow_watcher.orm.dart
  • packages/stem_postgres/lib/src/database/orm_registry.g.dart
  • packages/stem_postgres/lib/src/database/seed_runtime.dart
  • packages/stem_postgres/lib/src/database/seeders.dart
  • packages/stem_postgres/lib/src/database/stem_orm_logger.dart
  • packages/stem_postgres/lib/src/outbox/postgres_transactional_outbox.dart
  • packages/stem_postgres/lib/src/rate_limiting/postgres_rate_limiter.dart
  • packages/stem_postgres/lib/src/scheduler/postgres_lock_store.dart
  • packages/stem_postgres/lib/src/workflow/postgres_workflow_store.dart
  • packages/stem_postgres/lib/src/workflow/postgres_workflow_store_new.dart
  • packages/stem_postgres/lib/stem_postgres.dart
  • packages/stem_postgres/pubspec.yaml
  • packages/stem_postgres/test/datasource_logger_test.dart
  • packages/stem_postgres/test/integration/backends/postgres_backend_integration_test.dart
  • packages/stem_postgres/test/integration/backends/postgres_backend_tls_test.dart
  • packages/stem_postgres/test/integration/locks/postgres_lock_store_test.dart
  • packages/stem_postgres/test/integration/outbox/postgres_transactional_outbox_test.dart
  • packages/stem_postgres/test/integration/rate_limiting/postgres_rate_limiter_integration_test.dart
  • packages/stem_postgres/test/migration_upgrade_test.dart
  • packages/stem_postgres/test/migrations_registry_test.dart
  • packages/stem_redis/CHANGELOG.md
  • packages/stem_redis/README.md
  • packages/stem_redis/lib/src/backend/redis_backend.dart
  • packages/stem_redis/lib/src/brokers/redis_broker.dart
  • packages/stem_redis/lib/src/rate_limiting/redis_rate_limiter.dart
  • packages/stem_redis/lib/src/scheduler/redis_lock_store.dart
  • packages/stem_redis/lib/src/workflow/redis_workflow_store.dart
  • packages/stem_redis/lib/stem_redis.dart
  • packages/stem_redis/pubspec.yaml
  • packages/stem_redis/test/chaos/worker_resilience_test.dart
  • packages/stem_redis/test/integration/brokers/redis_broker_integration_test.dart
  • packages/stem_redis/test/integration/observability/redis_heartbeat_transport_integration_test.dart
  • packages/stem_redis/test/integration/rate_limiting/redis_rate_limiter_integration_test.dart
  • packages/stem_redis/test/integration/redis/redis_real_test.dart
  • packages/stem_redis/test/integration/redis/redis_tls_integration_test.dart
  • packages/stem_redis/test/unit/rate_limiting/redis_rate_limiter_test.dart
  • packages/stem_sqlite/CHANGELOG.md
  • packages/stem_sqlite/analysis_options.yaml
  • packages/stem_sqlite/benchmark/sqlite_throughput.dart
  • packages/stem_sqlite/benchmark/sqlite_throughput_baseline.json
  • packages/stem_sqlite/lib/src/backend/sqlite_result_backend.dart
  • packages/stem_sqlite/lib/src/broker/sqlite_broker.dart
  • packages/stem_sqlite/lib/src/connection.dart
  • packages/stem_sqlite/lib/src/database.dart
  • packages/stem_sqlite/lib/src/database/datasource.dart
  • packages/stem_sqlite/lib/src/database/seed_runtime.dart
  • packages/stem_sqlite/lib/src/database/seeders.dart
  • packages/stem_sqlite/lib/src/database/seeders/database_seeder.dart
  • packages/stem_sqlite/lib/src/database/stem_orm_logger.dart
  • packages/stem_sqlite/lib/src/workflow/sqlite_workflow_store.dart
  • packages/stem_sqlite/lib/stem_sqlite.dart
  • packages/stem_sqlite/pubspec.yaml
  • packages/stem_sqlite/test/backend/sqlite_result_backend_test.dart
  • packages/stem_sqlite/test/connection_test.dart
  • packages/stem_sqlite/test/datasource_logger_test.dart
  • packages/stem_sqlite/test/migration_upgrade_test.dart
  • packages/stem_sqlite/test/migrations_registry_test.dart
  • packages/stem_sqlite/test/workflow/workflow_restart_recovery_test.dart
  • pubspec.yaml
  • tool/check_examples.dart
  • tool/dagger_test.sh
  • tool/publish.dart
  • tool/stage_workspace.dart

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@kingwill101
kingwill101 marked this pull request as ready for review August 20, 2026 14:11

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 069fe6a416

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

int generation,
) async {
try {
await _broker.extendLease(delivery, interval);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Preserve the full lease when scheduling renewals

When a task runs beyond the first half of its visibility timeout, interval is both the timer cadence and the duration passed to extendLease, so PostgreSQL, SQLite, and memory adapters move expiration to exactly the next timer tick with no safety margin. The Redis adapter is more severe: its extendLease implementation XACKs the current receipt and inserts a delayed copy, so this automatic renewal makes another worker able to execute the same still-running task concurrently. Keep the renewal cadence separate from the full lease duration and use an adapter operation that actually extends Redis visibility.

Useful? React with 👍 / 👎.

Comment on lines +119 to +123
INSERT INTO stem_locks
(key, namespace, owner, expires_at, created_at, fencing_token)
VALUES (?, ?, ?, ?, ?, ?)
''',
[key, namespace, ownerValue, expiresAt, now, fencingToken],

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Serialize first acquisition before inserting lock rows

When two PostgreSQL clients concurrently acquire a previously unseen key, both SELECT ... FOR UPDATE queries return no rows, so neither transaction holds a lock before reaching this insert. One insert succeeds while the other raises a unique-key violation instead of returning null as the LockStore.acquire contract requires; this is a normal scheduler/coordination race. Use an atomic insert-or-ignore/upsert path or otherwise serialize creation of absent keys.

Useful? React with 👍 / 👎.

.listen(
(status) async {
if (status.state == TaskState.succeeded) {
final decoded = step.decode(status.payload);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Catch decoder failures in typed chains

If a typed task's decoder rejects a malformed or incompatible successful payload, this call throws before entering the following try block. Because the stream listener is asynchronous, that becomes an unhandled future error while the chain's completer and subscription remain pending, so TypedCanvasChain.run() never completes. Decoder and completion-callback failures should cancel the subscription and complete the chain future with the error.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant