Skip to content

feat(queue): move automation toggles to session scope - #3465

Merged
carlosflorencio merged 18 commits into
kdlbs:mainfrom
Fclem:feature/move-queue-toggles-p-dxs
Sep 8, 2026
Merged

feat(queue): move automation toggles to session scope#3465
carlosflorencio merged 18 commits into
kdlbs:mainfrom
Fclem:feature/move-queue-toggles-p-dxs

Conversation

@Fclem

@Fclem Fclem commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Tip

PR walkthrough: Open the visual walkthrough

The Auto-run control was taking way too much space for its purpose, so queue automation controls now sit as compact pills beside the queued count while their explanatory behavior remains discoverable through tooltips. Auto-merge is scoped per session and retains its supplementary compatibility guidance.

Important Changes

  • Move Auto-run and Auto-merge into compact responsive queue-header pills.
  • Persist Auto-merge overrides per session without changing the global default.
  • Carry the task, session, and session-incarnation identity through queue status and mutations.
  • Preserve queue ordering, lifecycle cleanup, and stale-session protection across queue operations.
  • Add state-specific Auto-run and Auto-merge supplementary tooltips.
  • Related task: IMP Move queue toggles per session.

Validation

  • pnpm --filter @kandev/web test -- --run components/task/chat/queued-ghost-panel-header.test.tsx
  • pnpm exec prettier --check components/task/chat/queued-ghost-panel-header.tsx components/task/chat/queued-ghost-panel-header.test.tsx
  • git diff --check
  • Pre-commit hooks passed, including changed-file web lint and i18n guards.
  • Manually verified the queue controls and both tooltips in the LAN mock task at desktop and mobile viewports with three queued messages.

Checklist

  • If I do not have repository write access and this is a large architectural change, I discussed the direction in a linked issue before opening this PR.
  • This PR contains one logical change; unrelated work is split into separate PRs.
  • I have performed a self-review of my code.
  • I have manually tested my changes and they work as expected.
  • My changes have tests that cover the new functionality and edge cases.
  • If my change touches UI files (apps/web/), I have added or updated Playwright e2e tests in apps/web/e2e/ and verified them with make test-e2e.
  • I checked whether this affects public docs in docs/public/** and updated them or noted why no docs change is needed.

Review in cubic

Screenshots

Desktop queue automation pills
Mobile queue automation pills

@greptile-apps

greptile-apps Bot commented Sep 7, 2026

Copy link
Copy Markdown

Too many files changed for review (214 files, 100 file limit).

Bypass the limit by tagging @greptile-apps to review.

@Fclem
Fclem temporarily deployed to opencode-review-trusted September 7, 2026 06:18 — with GitHub Actions Inactive
@coderabbitai

coderabbitai Bot commented Sep 7, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 197 files, which is 47 over the limit of 150.

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

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: QUIET

Plan: Advanced

Run ID: c23716d0-193e-4482-a5bb-2648cb554e19

📥 Commits

Reviewing files that changed from the base of the PR and between ad32c6b and 7eb524d.

📒 Files selected for processing (197)
  • apps/backend/internal/backendapp/orchestrator.go
  • apps/backend/internal/gateway/websocket/task_notifications.go
  • apps/backend/internal/gateway/websocket/task_notifications_test.go
  • apps/backend/internal/mcp/handlers/config_handlers_test.go
  • apps/backend/internal/mcp/handlers/config_task_handlers.go
  • apps/backend/internal/mcp/handlers/handlers.go
  • apps/backend/internal/mcp/handlers/handlers_test.go
  • apps/backend/internal/mcp/handlers/message_target_session_test.go
  • apps/backend/internal/mcp/handlers/message_task_test.go
  • apps/backend/internal/mcp/handlers/queue_status_event_test.go
  • apps/backend/internal/orchestrator/automation_run_liveness_test.go
  • apps/backend/internal/orchestrator/ci_automation_dispatch.go
  • apps/backend/internal/orchestrator/event_handlers_agent.go
  • apps/backend/internal/orchestrator/event_handlers_agent_clarification_test.go
  • apps/backend/internal/orchestrator/event_handlers_clarification.go
  • apps/backend/internal/orchestrator/event_handlers_duplicate_autostart_test.go
  • apps/backend/internal/orchestrator/event_handlers_github_ci_automation_test.go
  • apps/backend/internal/orchestrator/event_handlers_github_pr_automation_test.go
  • apps/backend/internal/orchestrator/event_handlers_gitlab_mr_automation_test.go
  • apps/backend/internal/orchestrator/event_handlers_lifecycle_dispatch.go
  • apps/backend/internal/orchestrator/event_handlers_passthrough_lifecycle_test.go
  • apps/backend/internal/orchestrator/event_handlers_passthrough_running_test.go
  • apps/backend/internal/orchestrator/event_handlers_pending_move_test.go
  • apps/backend/internal/orchestrator/event_handlers_queue_general_test.go
  • apps/backend/internal/orchestrator/event_handlers_queue_test.go
  • apps/backend/internal/orchestrator/event_handlers_streaming.go
  • apps/backend/internal/orchestrator/event_handlers_test.go
  • apps/backend/internal/orchestrator/event_handlers_workflow.go
  • apps/backend/internal/orchestrator/event_handlers_workflow_profile_preflight_test.go
  • apps/backend/internal/orchestrator/event_handlers_workflow_profile_session_policy_rollback_test.go
  • apps/backend/internal/orchestrator/event_handlers_workflow_profile_session_policy_test.go
  • apps/backend/internal/orchestrator/event_handlers_workflow_profile_test.go
  • apps/backend/internal/orchestrator/event_handlers_workflow_prompt_claim_test.go
  • apps/backend/internal/orchestrator/event_handlers_workflow_reset_quiescence_test.go
  • apps/backend/internal/orchestrator/executor/executor_interaction.go
  • apps/backend/internal/orchestrator/executor/executor_interaction_test.go
  • apps/backend/internal/orchestrator/executor/executor_mocks_test.go
  • apps/backend/internal/orchestrator/handlers/queue_handlers.go
  • apps/backend/internal/orchestrator/handlers/queue_handlers_attachment_cleanup_test.go
  • apps/backend/internal/orchestrator/handlers/queue_handlers_auto_merge_policy_test.go
  • apps/backend/internal/orchestrator/handlers/queue_handlers_snapshot_test.go
  • apps/backend/internal/orchestrator/handlers/queue_operations_handlers.go
  • apps/backend/internal/orchestrator/messagequeue/pending_move_expiry_test.go
  • apps/backend/internal/orchestrator/messagequeue/pending_move_sweep.go
  • apps/backend/internal/orchestrator/messagequeue/repository.go
  • apps/backend/internal/orchestrator/messagequeue/repository_auto_merge_override_test.go
  • apps/backend/internal/orchestrator/messagequeue/repository_auto_run_test.go
  • apps/backend/internal/orchestrator/messagequeue/repository_identity_boundary_test.go
  • apps/backend/internal/orchestrator/messagequeue/repository_memory.go
  • apps/backend/internal/orchestrator/messagequeue/repository_send_now_test.go
  • apps/backend/internal/orchestrator/messagequeue/repository_sqlite.go
  • apps/backend/internal/orchestrator/messagequeue/repository_sqlite_test.go
  • apps/backend/internal/orchestrator/messagequeue/send_now.go
  • apps/backend/internal/orchestrator/messagequeue/service.go
  • apps/backend/internal/orchestrator/messagequeue/service_auto_merge_policy_test.go
  • apps/backend/internal/orchestrator/messagequeue/service_auto_merge_test.go
  • apps/backend/internal/orchestrator/messagequeue/service_snapshot_test.go
  • apps/backend/internal/orchestrator/messagequeue/service_test.go
  • apps/backend/internal/orchestrator/messagequeue/types.go
  • apps/backend/internal/orchestrator/peer_message_resume_test.go
  • apps/backend/internal/orchestrator/pending_move_reaper.go
  • apps/backend/internal/orchestrator/pending_move_reaper_test.go
  • apps/backend/internal/orchestrator/prompt_dispatch_identity_test.go
  • apps/backend/internal/orchestrator/queue_auto_run_review_test.go
  • apps/backend/internal/orchestrator/queue_auto_run_test.go
  • apps/backend/internal/orchestrator/queue_send_now.go
  • apps/backend/internal/orchestrator/queue_send_now_test.go
  • apps/backend/internal/orchestrator/queued_dispatch.go
  • apps/backend/internal/orchestrator/service.go
  • apps/backend/internal/orchestrator/session_ensure_office_test.go
  • apps/backend/internal/orchestrator/steer_test.go
  • apps/backend/internal/orchestrator/step_handoff_carry.go
  • apps/backend/internal/orchestrator/task_operations.go
  • apps/backend/internal/orchestrator/task_operations_auto_merge_test.go
  • apps/backend/internal/orchestrator/task_operations_test.go
  • apps/backend/internal/orchestrator/workflow_e2e_test.go
  • apps/backend/internal/orchestrator/workflow_store.go
  • apps/backend/internal/system/queuesettings/queuesettings_test.go
  • apps/backend/internal/system/queuesettings/revision_test.go
  • apps/backend/internal/system/queuesettings/service.go
  • apps/backend/internal/system/queuesettings/store.go
  • apps/backend/internal/system/queuesettings/types.go
  • apps/backend/internal/system/settings/store.go
  • apps/backend/internal/system/settings/store_test.go
  • apps/backend/internal/task/dto/converters_test.go
  • apps/backend/internal/task/dto/dto.go
  • apps/backend/internal/task/handlers/process_handlers_test.go
  • apps/backend/internal/task/models/models.go
  • apps/backend/internal/task/repository/interface.go
  • apps/backend/internal/task/repository/session_repository_test.go
  • apps/backend/internal/task/repository/sqlite/attachment.go
  • apps/backend/internal/task/repository/sqlite/attachment_lifecycle_coverage_test.go
  • apps/backend/internal/task/repository/sqlite/attachment_postgres_test.go
  • apps/backend/internal/task/repository/sqlite/attachment_test.go
  • apps/backend/internal/task/repository/sqlite/base.go
  • apps/backend/internal/task/repository/sqlite/base_migrations.go
  • apps/backend/internal/task/repository/sqlite/base_schema.go
  • apps/backend/internal/task/repository/sqlite/git_snapshots_environment_test.go
  • apps/backend/internal/task/repository/sqlite/git_snapshots_test.go
  • apps/backend/internal/task/repository/sqlite/prompt_history_test.go
  • apps/backend/internal/task/repository/sqlite/queue_attachment_atomic_test.go
  • apps/backend/internal/task/repository/sqlite/session.go
  • apps/backend/internal/task/repository/sqlite/session_delete_identity_test.go
  • apps/backend/internal/task/repository/sqlite/session_incarnation_migration_test.go
  • apps/backend/internal/task/repository/sqlite/session_test.go
  • apps/backend/internal/task/repository/sqlite/subagent_context_test.go
  • apps/backend/internal/task/repository/sqlite/task.go
  • apps/backend/internal/task/repository/sqlite/task_deferred_move_test.go
  • apps/backend/internal/task/repository/sqlite/task_purge_race_postgres_test.go
  • apps/backend/internal/task/repository/sqlite/task_queue_purge_notify_test.go
  • apps/backend/internal/task/repository/sqlite/usage_events_schema_test.go
  • apps/backend/internal/task/repository/sqlite/workspace.go
  • apps/backend/internal/task/service/attachment_service.go
  • apps/backend/internal/task/service/attachment_service_lifecycle_test.go
  • apps/backend/internal/task/service/resource_cleanup_task_owned_test.go
  • apps/backend/internal/task/service/service_access.go
  • apps/backend/internal/task/service/service_attachments.go
  • apps/backend/internal/task/service/service_attachments_test.go
  • apps/backend/internal/task/service/service_resources.go
  • apps/backend/internal/task/service/service_resources_test.go
  • apps/backend/pkg/websocket/actions.go
  • apps/web/components/settings/system/message-queue-settings.test.tsx
  • apps/web/components/task/chat/queued-ghost-list.test.tsx
  • apps/web/components/task/chat/queued-ghost-list.tsx
  • apps/web/components/task/chat/queued-ghost-panel-header.test.tsx
  • apps/web/components/task/chat/queued-ghost-panel-header.tsx
  • apps/web/components/task/chat/use-queue-panel-escape.ts
  • apps/web/e2e/helpers/api-client.ts
  • apps/web/e2e/tests/chat/message-queue-scroll-helpers.ts
  • apps/web/e2e/tests/chat/message-queue.spec.ts
  • apps/web/e2e/tests/chat/mid-turn-steering.spec.ts
  • apps/web/e2e/tests/chat/mobile-message-queue-management.spec.ts
  • apps/web/e2e/tests/ssh/launch-task.spec.ts
  • apps/web/e2e/tests/task/mobile-sidebar-queued-count.spec.ts
  • apps/web/e2e/tests/task/sidebar-queued-count.spec.ts
  • apps/web/e2e/tests/workflow/workflow-manual-move-queue.spec.ts
  • apps/web/e2e/tests/workflow/workflow-queue-helpers.ts
  • apps/web/hooks/domains/comments/use-run-comment.test.ts
  • apps/web/hooks/domains/comments/use-run-comment.ts
  • apps/web/hooks/domains/review/use-send-finding-to-agent.ts
  • apps/web/hooks/domains/session/use-queue-admission.ts
  • apps/web/hooks/domains/session/use-queue-refetch.ts
  • apps/web/hooks/domains/session/use-queue-reorder.test.ts
  • apps/web/hooks/domains/session/use-queue-types.ts
  • apps/web/hooks/domains/session/use-queue.test.ts
  • apps/web/hooks/domains/session/use-queue.ts
  • apps/web/hooks/domains/session/use-request-changes-walkthrough.test.ts
  • apps/web/hooks/domains/session/use-request-changes-walkthrough.ts
  • apps/web/lib/api/domains/queue-api.test.ts
  • apps/web/lib/api/domains/queue-api.ts
  • apps/web/lib/state/app-state-types.ts
  • apps/web/lib/state/slices/session/remove-task-session.test.ts
  • apps/web/lib/state/slices/session/session-slice.ts
  • apps/web/lib/state/slices/session/session-slice.upsert.test.ts
  • apps/web/lib/state/slices/session/types.ts
  • apps/web/lib/types/http.ts
  • apps/web/lib/types/session-events.ts
  • apps/web/lib/ws/client.test.ts
  • apps/web/lib/ws/client.ts
  • apps/web/lib/ws/handlers/agent-session.test.ts
  • apps/web/lib/ws/handlers/agent-session.ts
  • apps/web/lib/ws/handlers/tasks-archive.test.ts
  • apps/web/lib/ws/handlers/tasks-walkthrough-cleanup.test.ts
  • apps/web/lib/ws/handlers/tasks.deleted.test.ts
  • apps/web/lib/ws/handlers/tasks.test-helpers.ts
  • apps/web/lib/ws/handlers/tasks.ts
  • apps/web/lib/ws/handlers/workspaces.test.ts
  • apps/web/lib/ws/handlers/workspaces.ts
  • apps/web/src/locales/en/chat.json
  • apps/web/src/locales/en/system.json
  • apps/web/src/locales/pseudo/chat.json
  • apps/web/src/locales/pseudo/system.json
  • apps/web/src/locales/pt-pt/chat.json
  • apps/web/src/locales/pt-pt/system.json
  • apps/web/src/locales/zh-cn/chat.json
  • apps/web/src/locales/zh-cn/system.json
  • apps/web/src/locales/zh-hk/chat.json
  • apps/web/src/locales/zh-hk/system.json
  • apps/web/src/locales/zh-tw/chat.json
  • apps/web/src/locales/zh-tw/system.json
  • docs/decisions/2026-09-04-inherit-queue-auto-merge-until-overridden.md
  • docs/decisions/INDEX.md
  • docs/plans/message-queue-session-automation/plan.md
  • docs/plans/message-queue-session-automation/task-01-persist-session-auto-merge-overrides.md
  • docs/plans/message-queue-session-automation/task-02-deliver-queue-automation-pills.md
  • docs/plans/message-queue-session-automation/task-03-update-queue-automation-documentation.md
  • docs/public/coordination.md
  • docs/public/operations.md
  • docs/public/sessions-and-review.md
  • docs/public/websocket-api.md
  • docs/specs/ui/README.md
  • docs/specs/ui/requirements/message-queue-auto-merge-session-overrides.md
  • docs/specs/ui/requirements/message-queue-auto-merge.md
  • docs/specs/ui/requirements/message-queue-automation-controls.md
  • docs/specs/ui/requirements/message-queue-management.md
  • docs/specs/ui/requirements/message-queue-run.md
  • docs/specs/ui/system-design/message-queue-automation-controls.md

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.

@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Claude finished @Fclem's task in 7m 53s —— View job


Findings

Suggestion (recommended, doesn't block)

  1. Tooltip unreachable via keyboard when Auto-merge is unavailableapps/web/components/task/chat/queued-ghost-panel-header.tsx:79

    • Issue: When autoMergeAvailable=false the inner Switch is disabled and keyboard-unreachable; TooltipTrigger asChild is on the outer <label>, which is not in the tab order. Mouse users see the tooltip on hover; keyboard users cannot discover why the pill is greyed out.
    • Fix: Wrap the disabled label in a focusable <span tabIndex={0}> when unavailable, per the apps/web/CLAUDE.md pattern for disabled-button tooltips. Fix this →
  2. autoMergeAvailable: false state has no test coverageapps/web/components/task/chat/queued-ghost-panel-header.test.tsx:64

    • Issue: The test file covers full-availability rendering and the isLoading disabled state, but autoMergeAvailable=false (opacity-50 class, disabled switch) has no assertion. This state can regress silently.
    • Fix: Add a test case asserting autoMergeSwitch.disabled === true and the opacity-50 class on the label when autoMergeAvailable={false}. Fix this →
  3. wsSetAutoMerge uses synchronous Snapshot while wsSetAutoRun publishes asynchronouslyapps/backend/internal/orchestrator/handlers/queue_operations_handlers.go:192

    • Issue: wsSetAutoRun calls publishStatusForIdentity (async) and returns a lightweight payload; wsSetAutoMerge calls Snapshot synchronously, then publishIdentityStatus, and returns the full QueueStatus. The frontend (runQueueMutation) discards both responses and calls refetch after — the synchronous Snapshot adds latency to the write path for no client benefit.
    • Fix: Align wsSetAutoMerge with wsSetAutoRun: async publish + lightweight response, relying on the frontend's refetch for state synchronisation as both do anyway. Fix this →

Summary

Severity Count
Blocker 0
Suggestion 3

Verdict: Ready with suggestions

The backend is well-structured. Identity-boundary semantics (QueueSessionIdentity, session_incarnation_id), policy resolution with ErrAutoMergePolicyChanged retry loops, the per-session admission lock protecting auto-merge overrides, the migration of pending_move identities, and the guardActiveTaskTx lifecycle guard are all implemented correctly. Test coverage for the identity boundary (repository_identity_boundary_test.go), policy races (service_auto_merge_policy_test.go), and the handler layer (queue_handlers_snapshot_test.go, queue_handlers_auto_merge_policy_test.go) is solid. The three suggestions above are non-blocking refinements.

Comment thread apps/web/components/task/chat/queued-ghost-panel-header.tsx
Comment thread apps/web/components/task/chat/queued-ghost-panel-header.test.tsx

@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: abcf424ab5

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread apps/web/hooks/domains/session/use-queue.ts
@Fclem
Fclem temporarily deployed to opencode-review-trusted September 7, 2026 09:15 — with GitHub Actions Inactive
@carlosflorencio

Copy link
Copy Markdown
Member

The new UX with the two buttons looks better 👍

I see you refactored a lot of strings as well, let me check the other changes.

@Fclem

Fclem commented Sep 7, 2026

Copy link
Copy Markdown
Contributor Author

Yes this is incorrect, will extract that in another PR

@carlosflorencio
carlosflorencio self-requested a review September 7, 2026 09:29
@Fclem
Fclem temporarily deployed to opencode-review-trusted September 7, 2026 09:52 — with GitHub Actions Inactive
@Fclem
Fclem temporarily deployed to opencode-review-trusted September 7, 2026 10:34 — with GitHub Actions Inactive
@carlosflorencio
carlosflorencio temporarily deployed to opencode-review-trusted September 7, 2026 10:53 — with GitHub Actions Inactive
@carlosflorencio

Copy link
Copy Markdown
Member

Thanks for the contribution. I pushed 57b5ec19 with a focused follow-up:

  • FIFO queue draining now retries after a worker releases its reservation, so a ready-event race cannot strand later prompts.
  • Workflow transitions are suppressed only when a queued prompt was actually dispatched.
  • Regression coverage and the remaining queue/session test fixtures are included.

The branch is current with main, has no merge conflicts, and has no unresolved review threads.

@Fclem
Fclem force-pushed the feature/move-queue-toggles-p-dxs branch from 57b5ec1 to 3208c18 Compare September 7, 2026 12:41
@Fclem
Fclem temporarily deployed to opencode-review-trusted September 7, 2026 12:41 — with GitHub Actions Inactive
…toggles-p-dxs

# Conflicts:
#	docs/decisions/INDEX.md
#	docs/specs/ui/README.md
@Fclem
Fclem temporarily deployed to opencode-review-trusted September 7, 2026 13:20 — with GitHub Actions Inactive
@Fclem
Fclem temporarily deployed to opencode-review-trusted September 7, 2026 14:01 — with GitHub Actions Inactive
@Fclem
Fclem temporarily deployed to opencode-review-trusted September 7, 2026 14:40 — with GitHub Actions Inactive
@carlosflorencio

Copy link
Copy Markdown
Member

Let me know after you split the PR so i can review again.

…toggles-p-dxs

# Conflicts:
#	apps/backend/internal/agent/runtime/lifecycle/executor_sprites_operations.go
#	apps/backend/internal/backendapp/orchestrator.go
#	apps/backend/internal/orchestrator/service.go
#	apps/backend/internal/orchestrator/task_operations.go
#	apps/backend/internal/system/settings/store.go
#	docs/decisions/INDEX.md
@Fclem
Fclem temporarily deployed to opencode-review-trusted September 8, 2026 08:19 — with GitHub Actions Inactive
@Fclem
Fclem temporarily deployed to opencode-review-trusted September 8, 2026 09:44 — with GitHub Actions Inactive
@Fclem
Fclem temporarily deployed to opencode-review-trusted September 8, 2026 14:38 — with GitHub Actions Inactive
@Fclem
Fclem temporarily deployed to opencode-review-trusted September 8, 2026 17:25 — with GitHub Actions Inactive
…toggles-p-dxs

# Conflicts:
#	apps/backend/internal/orchestrator/event_handlers_agent.go
#	apps/backend/internal/orchestrator/queue_send_now.go
#	apps/backend/internal/orchestrator/queue_send_now_test.go
@Fclem
Fclem had a problem deploying to opencode-review-trusted September 8, 2026 19:24 — with GitHub Actions Error
…emote-20260908

# Conflicts:
#	apps/backend/internal/orchestrator/event_handlers_agent.go
#	apps/backend/internal/orchestrator/queue_send_now.go
#	apps/backend/internal/orchestrator/task_operations.go
@carlosflorencio

Copy link
Copy Markdown
Member

Thanks for the contribution. I synced this branch with current main and fixed the queue-dispatch integration points so session identity checks, turn-start admission, and step-handoff prompts stay consistent across FIFO and Send Now paths. Fresh CI is running on c721f971.

…toggles-p-dxs

# Conflicts:
#	apps/backend/internal/orchestrator/event_handlers_agent.go
#	apps/backend/internal/orchestrator/queue_send_now.go
#	apps/backend/internal/orchestrator/task_operations.go
@Fclem
Fclem temporarily deployed to opencode-review-trusted September 8, 2026 19:39 — with GitHub Actions Inactive
@carlosflorencio
carlosflorencio merged commit d61e06a into kdlbs:main Sep 8, 2026
76 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants