Fix race condition in McpClient.start() double initialization #10892
Open
HAL9000
wants to merge 1 commit from
bugfix/mcp-race-condition-start into master
pull from: bugfix/mcp-race-condition-start
merge into: cleveragents:master
cleveragents:master
cleveragents:fix/config-service-remove-undocumented-local-scope
cleveragents:bugfix/validation-attach-named-option-format
cleveragents:docs/add-example-tool-and-validation-management
cleveragents:bugfix/project-show-resource-name
cleveragents:bugfix/backlog-resource-schema-missing-overlay-strategy
cleveragents:fix/action-argument-schema/misleading-error-message
cleveragents:fix/remove-executable-resource-type
cleveragents:fix/config-get-output-missing-origin-panel-and-envelope
cleveragents:fix/tui-help-command-full-catalog-listing
cleveragents:fix/a2a-plan-execute-full-lifecycle
cleveragents:fix/invariant-service-action-scope-effective
cleveragents:fix/plan-explain-rich-output-panels
cleveragents:fix/a2a-dispatch-not-found-error-response
cleveragents:fix/project-service-namespaced-project
cleveragents:fix/automation-profile-remove-rich-output-panel
cleveragents:fix/container-handler-module-missing
cleveragents:fix/format-output-rich-color-renderers
cleveragents:fix/type-safety-legacy-migrator-type-ignore
cleveragents:spec/update-sse-streaming-event-example
cleveragents:fix/acms-skeleton-compressor-signature
cleveragents:controller-state-machine
cleveragents:fix/skill-add-yaml-wrapper-key
cleveragents:fix/1476-tool-list-cols
cleveragents:bugfix/permissions-diff-mode-cycle
cleveragents:fix/1444-access-type
cleveragents:fix/1429-node-ref
cleveragents:fix/1443-tier-defaults
cleveragents:bugfix/session-export-format-flag
cleveragents:feature/aws-cloud-handler-sdk
cleveragents:feat/output-renderer-registry
cleveragents:fix/1432-lsp
cleveragents:bugfix/1039-missing-validation-unit-tests-yaml
cleveragents:feature/audit-preserve-event-timestamp
cleveragents:feature/m8-tui-materializer
cleveragents:tdd/m4-automation-profile-di-bypass
cleveragents:bugfix/m7-audit-session-race
cleveragents:fix/1441-ctrl-tab
cleveragents:feature/m9-entity-sync
cleveragents:feature/extract-cleveractors-library
cleveragents:feature/m9-agent-card
cleveragents:feature/m9-team-collab
cleveragents:feature/m7-postgresql-backend
cleveragents:feature/m9-container-lifecycle
cleveragents:fix/issue-11189-config-actor-format
cleveragents:bugfix/m5-actor-options-ignored
cleveragents:fix-11004-tui-suggestions
cleveragents:feature/9827-wrap-plan-status-json-envelope
cleveragents:fix/arg-swap-validation-attachment-8177
cleveragents:pr-fix/9663-hot-warm-cold-tier-reliability
cleveragents:pr_fix-11000-conflict-report
cleveragents:bugfix/m3.6.0-lsp-7044-subprocess-cleanup
cleveragents:fix/7478-file-ops-security-fix
cleveragents:impl-tui-materializer
cleveragents:test/hierarchical-plan-4phase-lifecycle
cleveragents:feature/security-fix-relpath-pr-11217
cleveragents:feature/m2-implementation-pool-supervisor-checklist
cleveragents:fix-file-tools-path-validation
cleveragents:bugfix/m8-tui-input-live-refresh
cleveragents:feature/9126-fix-action-scope-invariant-merge
cleveragents:bugfix/m7-tool-calling-llm-options
cleveragents:fix-7478-startswith-bypass
cleveragents:bugfix/m3-cleanup-subprocess-on-failed-init
cleveragents:bugfix/m8-tui-anthropic-model-name
cleveragents:feat/integrate-cleveractors
cleveragents:feature/m8-tui-llm-dispatch
cleveragents:bugfix/m3.6.0-lsp-transport-header-injection-ascii
cleveragents:fix-11175
cleveragents:fix/auto_debug-partial-state
cleveragents:fix/issue-9124-add-bdd-tags
cleveragents:pr-9673-budget-enforcement
cleveragents:fix/actor-loader-list-actors-race-condition
cleveragents:pr-9675
cleveragents:feat/v3.3.0-three-way-merge-engine
cleveragents:fix/issue-7478-inline-executor-startswith-bypass
cleveragents:fix/plan-apply-json-envelope
cleveragents:feat/v3.4.0-acms-storage-tiers
cleveragents:feat/tui-tuimat-5326
cleveragents:fix-9675-context-show-clear
cleveragents:agents/final-working
cleveragents:feat/v3.4.0-context-show-clear-cli
cleveragents:fix/10356-eventbus-unsubscribe
cleveragents:11229-fix-acms-hot-max-tokens-regression-tests
cleveragents:pr-fix-7801
cleveragents:pr-8701-invariant-model
cleveragents:pr-fix/10597-lsp-transport-cleanup
cleveragents:bugfix/m3.6.0-lsp-transport-resource-leak
cleveragents:bugfix/9558-plan-conflict-detection
cleveragents:pr-fix-9608
cleveragents:feat/v3.3.0-plan-correct-revert-append
cleveragents:dmpipeline-v2
cleveragents:pr-fix-10608-header-injection
cleveragents:pr-9827-fix
cleveragents:bugfix/7492-validation-attachment-argument-swap
cleveragents:pr-fix-11002
cleveragents:feat/v3.4.0-context-list-add-cli
cleveragents:fix/plan-status-json-envelope
cleveragents:feat/v370/multi-session-tabs
cleveragents:fix-branch
cleveragents:fix/project-show-missing-panels
cleveragents:AUTO-IMP/PR-10069-checklist
cleveragents:feature/m2-pr-compliance-checklist
cleveragents:feature/pr-10592-cloud-resource-types
cleveragents:fix-lsp-transport-cleanup
cleveragents:feat/v360/cloud-resource-types
cleveragents:feature/context-strategy-protocol
cleveragents:refactor/v3.6.0-acp-to-a2a-rename
cleveragents:fix/context-cli-consolidation
cleveragents:fix/10608-lsp-header-injection
cleveragents:feat/acms-context-index
cleveragents:fix/plan-status-missing-output-panels
cleveragents:pr/fix-arg-swap-validation-attachment-8177
cleveragents:feature/issue-4748-actor-context-list-show-clear
cleveragents:fix-cli-plan-status-envelope
cleveragents:fix/plan-tree-color-format-ansi-output
cleveragents:pr/9981
cleveragents:pr/11153-auto-debug-fix
cleveragents:pr/10589-tui-materializer
cleveragents:fix/validate_path_security
cleveragents:pr-fix-11177-status-check-native-expressions
cleveragents:bugfix/m6-validate-path-startswith
cleveragents:security/relpath-containment-fallback
cleveragents:a2a-materializer-pr-fix
cleveragents:pr-fix-10608
cleveragents:bugfix/9250-a2a-session-id-validation-before-cleanup
cleveragents:pr-fix-11053
cleveragents:fix/10496-auto-debug-node-state-mutation
cleveragents:feat/tui-v370/tui-materializer
cleveragents:fix/a2a-handle-session-close-missing-session-id
cleveragents:fix/validation-attachment-arg-swap-8177
cleveragents:pr-fix-11196-invariant
cleveragents:feat/v3.4.0-acms-budget-enforcement
cleveragents:pr-fix-11196
cleveragents:bugfix/m5-fix-hot-max-tokens-tier
cleveragents:pr-fix-9675
cleveragents:perf/acms-large-project-indexing-optimization
cleveragents:perf-fix
cleveragents:pr-9608
cleveragents:feature/ten-way-merge-engine
cleveragents:pr-fix-branch
cleveragents:pr-11217
cleveragents:bugfix/9608-three-way-merge-engine
cleveragents:11101-three-way-merge-engine
cleveragents:feat/v3.4.0/acms-context-policy
cleveragents:fix/remove-silent-argument-swap
cleveragents:fix-pr-11000-structured-conflict-report
cleveragents:pr-fix-11053-session-id-validation
cleveragents:agents/fix-eventbus-unsubscribe
cleveragents:pr-10356
cleveragents:fix/invariant-action-scope
cleveragents:bugfix/issue-8395-sanitise-db-url
cleveragents:bugfix/m3-fix-action-scope-invariant-merge
cleveragents:pr-9671
cleveragents:feature/wire-missing-event-emitters
cleveragents:bugfix/m3.6.0-lsp-transport-post-spawn-cleanup
cleveragents:dmpipeline
cleveragents:bugfix/m5-acms-project-budget-override
cleveragents:fix/iterate-all-actors
cleveragents:pr/11217-fix-prefix-collision-bypass
cleveragents:fix/pr-11011-subprocess-cleanup
cleveragents:pr-11217-fix
cleveragents:pr-11217-relpath-fix
cleveragents:feat/v3.6.0-context-strategy-protocol
cleveragents:bugfix/tui-actor-overlay-render-shadow
cleveragents:bugfix/m5-revert-acms-budget-assembler
cleveragents:fix/eventbus-unsubscribe
cleveragents:feature/pr-9981
cleveragents:fix/v3.7.0/actor-add-update-flag
cleveragents:agents/fix-invariant-persistence-8573
cleveragents:fix/invariant-database-persistence
cleveragents:feat/tui-materializer-a2a
cleveragents:fix/tui-tui-materializer-a2a-event-queue
cleveragents:fix/unsubscribe-eventbus
cleveragents:pr-11153
cleveragents:feature/11201
cleveragents:pr-fix-11153-patched
cleveragents:pr-branch
cleveragents:fix/10813-strategy-decision-persistence
cleveragents:fix-pr-11145-status-check
cleveragents:pr-11053
cleveragents:pr-fix-10597-subprocess-cleanup
cleveragents:bugfix/mcp-infer-resource-slots-null-properties
cleveragents:pr-11166
cleveragents:pr-9675-fix
cleveragents:feat/structural-component-output-validation
cleveragents:fix/invariant-service-thread-safety
cleveragents:pr-fix-8179-implementation
cleveragents:pr-fix-9313
cleveragents:cleveragents-pr-fix-11038
cleveragents:fix/m2-acceptance-test
cleveragents:fix/pr-11042-rename-render
cleveragents:fix/action-scope-inmerge
cleveragents:fix/wf12-oom-sigkill
cleveragents:fix/wf18-container-clone-e2e
cleveragents:tdd/mcp-client-timer-cancel-race
cleveragents:feature/auto-debug-nodes
cleveragents:feat/v3.2.0-decision-recording-persistence
cleveragents:bugfix/m6-actor-overlay-render-shadow
cleveragents:bugfix/m7-plan-strategy-decisions-json
cleveragents:fix/10911-tui-suggestions-query-extraction
cleveragents:fix/lsp-transport-subprocess-cleanup
cleveragents:pr-fix-8177-validation
cleveragents:bugfix/m3-plan-status-json-envelope
cleveragents:fix/invariant-persistence-8573
cleveragents:pr-fix-11037
cleveragents:pr-11015-fix
cleveragents:pr_fix_11015
cleveragents:fix/m1-security-fix-startswith-bypass
cleveragents:fix/automation-profile-gates-lifecycle
cleveragents:fix-status-check-brittle-pipeline-11212
cleveragents:feat/pr-10590-dual-capability-strategies
cleveragents:feat/structural-output-validation
cleveragents:bugfix/m2-ci-status-check-resilience
cleveragents:fix-sandbox-cache-invalidation
cleveragents:feature/acp-a2a-rename-fix
cleveragents:feature/m3-plan-correction-data-model
cleveragents:pr-fix-10356-unsubscribe
cleveragents:pr-fix-11011
cleveragents:pr_fix/lsp-transport-header-injection-ascii
cleveragents:fix-pr-11002-startswith-bypass-7478
cleveragents:bugfix/acms-project-budget-override
cleveragents:fix/ci-status-check-resilience
cleveragents:bugfix/pr-fix-10597-cleanup-subprocess-on-init-failure
cleveragents:bugfix/sandbox-reexecute-cleanup
cleveragents:pr-fix-8701-invariant-model
cleveragents:fix/test-dotdot-traversal-assertion
cleveragents:fix/cleanup-stale-preserve-commits
cleveragents:fix/10592-pr-compliance
cleveragents:fix/security-file-tools-path-traversal-7478
cleveragents:pr-11180-fix
cleveragents:fix-combined-format
cleveragents:fix-9131-invariant-propagation
cleveragents:fix/tui-actor-selection-overlay
cleveragents:pr-11201
cleveragents:merge/pr-11196-invariant-fix
cleveragents:fix/issue-10813-strategize-decision-persistence
cleveragents:pr-fix-11170
cleveragents:pr/11165
cleveragents:temp-pr-11174
cleveragents:feat/invariant-enforcement-validation-pipeline
cleveragents:pr-fix-10356-unsubscribe-eventbus
cleveragents:pr-fix-11156-python313-deprecation
cleveragents:feature/pr-7801-fix-validate-path-security
cleveragents:fix/11039-render-refresh
cleveragents:fix/tui-actor-selection-render-rename
cleveragents:pr-fix-11089-session-close-validation
cleveragents:pr-fix/11089-session-close-validation
cleveragents:pr-fix-11182
cleveragents:feature/7926-persist-decision-dependencies
cleveragents:bugfix/m3-rxpy-subject-close
cleveragents:test/restore-e2e-tests
cleveragents:feature/m694-tui-materializer-a2a-integration-layer
cleveragents:feature/issue-pr-9271-hot-max-tokens
cleveragents:pr-fix-8177
cleveragents:test/v360/e2e-project-plan-correction
cleveragents:bugfix/issue-8426-stdio-cleanup
cleveragents:feature/eventbus-unsubscribe
cleveragents:bugfix/m3-integrate-mcp-transport
cleveragents:fix/concurrent-stdout-restoration
cleveragents:feat/a2a-stdio-transport-fix-264
cleveragents:PR-fix-wf18
cleveragents:feature/sandbox-cache-invalidation
cleveragents:fix/issue-10496-auto-debug-state-mutation
cleveragents:fix/python-313-asyncio-deprecations
cleveragents:pr-11128
cleveragents:pr-11180
cleveragents:pr-11165
cleveragents:pr-practice
cleveragents:structural-output-validation
cleveragents:fix/status-check-native-expressions
cleveragents:feat/merge-conflict-detection
cleveragents:11036-fix-acms-hot-max-tokens
cleveragents:pr/11166
cleveragents:fix/ci-status-check-native-expressions
cleveragents:fix/stdlib-transport-cleanup
cleveragents:fix/11176-actor-selection-render
cleveragents:pr-fix-10597
cleveragents:feature/pr-compliance-pool-supervisor
cleveragents:fix/actor-add-update-enforcement-fix
cleveragents:pr_fix/8209
cleveragents:pr-10590
cleveragents:fix/python313-asyncio-get-event-loop-deprecation
cleveragents:pr-fix-#11053-session-id-validation
cleveragents:pr-fix-11042-renamed-render
cleveragents:feat/v360/acp-to-a2a-rename
cleveragents:fix-arg-swap-validation-attachment-8177
cleveragents:fix/asyncio-get-event-loop-deprecation
cleveragents:fix_8395_pr
cleveragents:pr-fix-11153-auto-debug-mutation
cleveragents:pr/11051-thread-safety-invariant
cleveragents:fix-plan-status-json-envelope
cleveragents:bugfix/pr-11015-pool-supervisor-checklist
cleveragents:feature/fix-7478-validate-path
cleveragents:feature/plans-conflict-detection
cleveragents:pr-11141-cleanup-stale-commits-beyond-head
cleveragents:fix/pyyaml-vulnerability-upgrade
cleveragents:pr-fix-9244
cleveragents:bugfix/m3-invariant-propagation
cleveragents:feature/issue-10480-fix-validation-bypass
cleveragents:feature/m3-invariant-enforcement-validation-pipeline
cleveragents:feat/invariant-enforcement-strategize-phase
cleveragents:fix/action-schema-argument-default-type-validation
cleveragents:issue-10438-fix
cleveragents:fix/mcp-timer-race-10516
cleveragents:fix/10480-validation-bypass-fix
cleveragents:fix/cli-session-tell-format-flag
cleveragents:feat/agents-invariant-add-list-remove-commands
cleveragents:restore-e2e-cleanup
cleveragents:fix/events-eventbus-unsubscribe
cleveragents:fix/issue-11120-cleanup-stale-preserve-artifacts
cleveragents:feature/fix-issue-11121-cleanup-stale-reinvoke
cleveragents:fix/issue-10480-plan-validation
cleveragents:feature/m5-tdd-quality-gate
cleveragents:bugfix/11121-fix-cleanup_stale-preserve-meaningful-changes
cleveragents:bugfix/m8-set-active-persona-preset-reset
cleveragents:feat/context-priority-strategy
cleveragents:feature/issue-4381-docs-api-and-module-guides
cleveragents:m7-opencode-ruff
cleveragents:bugfix/m3-wf18-oom-sigkill
cleveragents:bugfix/acms-dual-strategy-capabilities-incompatible-fields
cleveragents:feature/benchmark-scheduled-workflow
cleveragents:feature/m8-tui-mainscreen
cleveragents:feat/v3.4.0/acms-project-indexer
cleveragents:fix/10932-preserve-strategy-decisions-json
cleveragents:fix/data-integrity-session-rollback-7489
cleveragents:fix/issue-6329-resource-remove-edge-table
cleveragents:fix/issue-7524-invariant-service-thread-safety
cleveragents:pr-10932-fix-plan-strategy-decisions
cleveragents:pr-fix-9244-pyyaml-upgrade
cleveragents:refactor/noxfile-parallel-test-architecture
cleveragents:task/ci-matrix-strategy-python-versions
cleveragents:bugfix/m3.6.0-ci-pipeline-flakiness-stabilization
cleveragents:feat/v3.3.0-plan-rollback
cleveragents:refactor/auto-guard-1-cli-a2a-boundary
cleveragents:feature/issue-10755-redirect-rich-panels-to-stderr
cleveragents:pr10871
cleveragents:fix/10881-propagate-invariants-to-child-plans
cleveragents:feat/resources-extension-interface
cleveragents:pr-fix-10901
cleveragents:ci/optimize-benchmarks-regression
cleveragents:fix/tui-extract-at-token-suggestions
cleveragents:feat/acms-index-data-model
cleveragents:feature-10887-eventbus-unsubscribe
cleveragents:feature/m5-add-repo-indexing-showcase
cleveragents:PR-10910-a2a-json-rpc-routing
cleveragents:feature/milestone-based-pr-prioritization
cleveragents:bugfix/m3-issue-9055
cleveragents:auto-time-3-day106-cycle2
cleveragents:feature/m39-timeline-day106-cycle2-2026-04-16
cleveragents:timeline/day-106-cycle2-2026-04-16-auto-time-3
cleveragents:feat/issue-10921-a2a-http-transport
cleveragents:pr/fix-10842
cleveragents:feature/issue-10746-fix-agents-graphs-plan-generation-validate-always-passes-for-code-longer-than-10-characters-making-llm-validation-ineffective
cleveragents:agents/fix-10866-permissions-screen-to-textual-screen
cleveragents:pr-10886
cleveragents:bugfix/m3-session-tell-format
cleveragents:fix/pr-10890-shell-safety-integration
cleveragents:fix/session-delete-json-envelope
cleveragents:pr-10851
cleveragents:test/v3.8.0-ci-quality-execution-time
cleveragents:feature/m7-timeline-day-106-update
cleveragents:bugfix/context-remove-path-traversal-10924
cleveragents:pr-10876
cleveragents:fix/gemini-fallback-order
cleveragents:fix/trailing-comma-opencode-json
cleveragents:pr/fix/mcp-client-start-race-condition
cleveragents:fix/project-switch-command
cleveragents:fix-pr-4211
cleveragents:feat/three-way-merge-engine-9608
cleveragents:pr/9673
cleveragents:fix/1469-plan-execute-structured-panels
cleveragents:fix/actor-provider-validation
cleveragents:implement-pr-9442
cleveragents:cleveragents-push-23420b48
cleveragents:fix/validation-repo-silent-swap
cleveragents:feat/context-strategy-plugin-system
cleveragents:fix/startswith-bypass-7478
cleveragents:fix-plan-status-envelope-11034
cleveragents:fix/invariant-thread-safety
cleveragents:fix-thread-safety-invariant-service
cleveragents:fix/8284-warned-sessions-reset
cleveragents:docs/milestone-plan-navigation
cleveragents:feat/v3.3.0-checkpoint-creation
cleveragents:feature/implementor-notification-11032
cleveragents:task/ci-optimize-e2e-tests-execution-time
cleveragents:feature/pr-9599-plan-correct-correction-engine
cleveragents:pr-fix-10593
cleveragents:pr9452
cleveragents:fix/isolate-checkpoint-prune-test
cleveragents:pr/fix-9601
cleveragents:pr/9234-hardening-bdd-tags
cleveragents:bugfix/9673-acms-budget-enforcement
cleveragents:pr-8667
cleveragents:auto-arch/spec-pr-10451-test-coverage
cleveragents:fix/10954-security-scan-dockerfile
cleveragents:bugfix/9183-bdd-tag-enforcement
cleveragents:fix/7566-engine_cache-toctou-race
cleveragents:fix/10934-preserve-strategy-decisions-json
cleveragents:bugfix/10608-lsp-header-injection
cleveragents:bugfix/9981-acms-indexing-optimize
cleveragents:bugfix/11077-security-escape-bypass
cleveragents:fix/auto-rev-sup-tracking-prefix
cleveragents:fix-lsp-subprocess-cleanup-10597
cleveragents:improvement/agent-evolution-pool-supervisor-pr-metadata
cleveragents:fix/plan-tree-json-output-envelope
cleveragents:pr-9313-fix
cleveragents:bugfix/9244-pyyaml-security-upgrade
cleveragents:feature/issue-1925-add-asv-tests-for-domain-module
cleveragents:test/domain-asv-benchmarks
cleveragents:feature/9250-fix-a2a-session-close
cleveragents:fix/pr-10027-acms-default-pipeline
cleveragents:bugfix/m2-plan-explain-alternatives-format
cleveragents:fix-invalidate-sandbox-dirs-cache-after-purge-7527
cleveragents:pr-fix-10958-async-cleanup-tests
cleveragents:feat/adr-049-layer-boundary-enforcement
cleveragents:fix/action-list-table-columns
cleveragents:fix/issue-7478-validate-path-startswith-bypass
cleveragents:pr-fix-ci-11000
cleveragents:fix/agent-skill-multi-scope-discovery
cleveragents:pr_fix_8675_switch_project_command
cleveragents:feat/m6/devcontainer-clone-into-sandbox
cleveragents:fix/tui-keybinding-preset-persona-cycling
cleveragents:pr-fix-10982
cleveragents:bugfix/m3-invariant-service-thread-safety
cleveragents:pr-fix-10937-close-reactive-eventbus
cleveragents:pr-fix-7478-path-traversal
cleveragents:feature/benchmark-scheduled-workflow-fix
cleveragents:pr-9183-add-bdd-tags
cleveragents:pr/11029-review-started-notification
cleveragents:fix/pyyaml-security-upgrade
cleveragents:fix-plan-status-panels
cleveragents:fix-pr-11037
cleveragents:feat/v3.6.0-database-resource-types
cleveragents:pr-10591-checkout
cleveragents:pr-10979
cleveragents:fix/invariant-thread-safety-8209
cleveragents:pr-fix-11002-validate-path-bypass
cleveragents:fix/10597-lsp-proc-cleanup
cleveragents:fix/plan/tree-envelope-9313
cleveragents:fix-6568-push
cleveragents:fix/issue-6425-tui-persona-cycling-keybinding
cleveragents:pr/11044
cleveragents:feature/m6-reduce-redundant-ci-status-reporting
cleveragents:fix/11041-plan-tree-envelope
cleveragents:fix/ca-test-infra-improver-health-spam
cleveragents:agents/pr-6628-fix
cleveragents:docs/add-showcase-cli-basics
cleveragents:auto-time-1-day107-cycle
cleveragents:improvement/agent-uat-tester-parallel-docs-pr-fix
cleveragents:fix/issue-11047-actor-add-rename-from-config
cleveragents:fix/pr-11050-subprocess-cleanup
cleveragents:pr-6741
cleveragents:ci/cache-helm-binary-auto-inf-1
cleveragents:fix/8675-project-switch
cleveragents:fix/7527-sandbox-cache-invalidation
cleveragents:fix/issue-6319-project-context-set-output
cleveragents:pr/fix-9183-bdd-tags
cleveragents:fix/issue-6325-plan-explain-decision-id
cleveragents:fix/1422-docs
cleveragents:pr-fix-1485-updates
cleveragents:spec/subplan-system-v3.3.0
cleveragents:pr/6723-fix-session-create-json
cleveragents:improvement/agent-bug-hunt-pool-supervisor-tracking-prefix-complete
cleveragents:fix/pr-6695-session-list-empty-json
cleveragents:fix/file-tools-startswith-bypass
cleveragents:pr_fix_8256
cleveragents:pr-9663-fix
cleveragents:docs/add-example-resource-and-skill-management
cleveragents:feature/m39-cli-basics-showcase
cleveragents:pr-fix-7478-startswith-bypass
cleveragents:fix/issue-11047-actor-add-remove-positional-name
cleveragents:fix/gemini-fallback-order-fix-3
cleveragents:pr_fix_8179
cleveragents:fix/gemini-fallback-order-fix-2
cleveragents:fix/validation-list-command
cleveragents:fix/validation-list-command-clean
cleveragents:fix-pr7957-complete-tracking-prefix
cleveragents:pr-7922-fix-lint
cleveragents:fix/validation-swap-8177
cleveragents:add-plan-start-alias
cleveragents:feature/pr-8304-container-clone-into
cleveragents:fix-pyyaml-11012
cleveragents:pr-fix-9461
cleveragents:fix/pr-11004-tui-token-extraction
cleveragents:fix/invariant-scope-handling
cleveragents:feat/plan-correction-8531
cleveragents:pr/8685-correction-data-model-persistence
cleveragents:bugfix/lsp-stdio-transport-cleanup-10597
cleveragents:pr-8660
cleveragents:feat-scope-chain-resolution
cleveragents:chore/pyyaml-upgrade
cleveragents:fix/9250-session-id-validation-handle-session-close
cleveragents:fix/issue-7478-file-tools-validate-path
cleveragents:pr-fix-9442-tui-ctrltab
cleveragents:spec/update-cycle8-validation-gate-empty-run-guard
cleveragents:fix/tui-sqlite-session-persistence-10648
cleveragents:fix/8661-plan-start-alias
cleveragents:fix-10649
cleveragents:refactor/add-return-type-get-services
cleveragents:pr-fix-cache-init
cleveragents:pr9407-timeline
cleveragents:feat/tui-prompt-symbol
cleveragents:pr_fix_9407-plan-alternatives-structured
cleveragents:feat/automation-profile-precedence-chain
cleveragents:bugfix/8179-remove-session-rollback-calls
cleveragents:feat/v360/pluggable-scope-chain-api
cleveragents:pr-9246
cleveragents:refactor/agent-configurable-limits-context-analysis-plan-generation
cleveragents:fix/issue-6452-session-tell-output
cleveragents:fix/v370/quality-gates-command-injection
cleveragents:pr-fix-10635-fixed
cleveragents:pr-10069
cleveragents:pr/fix-9313
cleveragents:pr-10643
cleveragents:invariant-pr-8684-fix
cleveragents:pr-fix-6676-resource-remove-edge-table
cleveragents:refactor/v360/audit-rename-acp-imports
cleveragents:fix/issue-7623-validation-pipeline-stdout
cleveragents:fix/acms-consolidate-strategycapabilities
cleveragents:fix/issue-7604-a2a-event-queue-concurrency
cleveragents:pr-fix-8661
cleveragents:auto-arch/spec-clarifications-cycle-1
cleveragents:feat/pure-graph-bdd-coverage
cleveragents:fix/9250-validate-session-id-before-cleanup
cleveragents:feature/issue-9442-fix-tui-correct-preset-cycling-keybinding-to-ctrl-tab-and-add-persona-tab-cycling
cleveragents:bugfix/m6-file-tools-validate-path-bypass
cleveragents:fix/invariant-add-scope
cleveragents:bugfix/m3-shell-safety-service-tui
cleveragents:pr-8684-persist-invariants
cleveragents:pr-8209-fix
cleveragents:docs/v360/repl-actor-run-showcase
cleveragents:feat/v360/cost-session-budget
cleveragents:bugfix/8177-remove-silent-argument-swap
cleveragents:fix/plan-apply-rich-output-panels
cleveragents:pr-fix-11012
cleveragents:pr-fix-11012-pyyaml-upgrade
cleveragents:pr-fix-8667
cleveragents:pr/fix/11012-pyinsec
cleveragents:pr-fix-9407
cleveragents:pr-8853
cleveragents:test/cli-lifecycle-e2e-full-plan-lifecycle
cleveragents:bugfix/m3-evlv-9824-implementation-pool-compliance-checklist
cleveragents:pr/10069
cleveragents:docs/pr-creator-state-priority-labels
cleveragents:fix/1514-structured-panels
cleveragents:test/core-asv-benchmarks
cleveragents:fix-8640-remove-positional-name
cleveragents:pr-fix-10995
cleveragents:refactor/v3.6.0-acp-to-a2a-rename-push
cleveragents:pr-9663
cleveragents:bugfix/m3.6.0-lsp-discovery-resource-exhaustion-dos
cleveragents:8660-move-namespace-filter-inside-lock
cleveragents:pr-fix-work
cleveragents:test/plan-correct-json-output-tdd
cleveragents:pr-8304
cleveragents:feat/v3.2.0-invariant-data-model-db-schema
cleveragents:pr_fix_1514_v2
cleveragents:timeline-update-2026-04-19
cleveragents:pr-fix-9313-plan-tree-envelope
cleveragents:test/v3.6.0/advanced-context-strategies-tests
cleveragents:pr/11004-fix-tui-suggestions-query-extraction
cleveragents:pr-fix-9817
cleveragents:feat/9558-plan-conflict-detection
cleveragents:docs/timeline-day-101
cleveragents:fix/v360/plugin-loader-security
cleveragents:feat/acms-context-policy-fix-9671
cleveragents:pr-9817-plan-apply-json
cleveragents:pr-fix-9460
cleveragents:pr-fix-6722-prompt-symbol
cleveragents:pr/9671
cleveragents:pr-fix-9671
cleveragents:pr-10592-fix
cleveragents:fix/issue-7478-file-path-validation
cleveragents:pr-fix-7478-validatepath
cleveragents:feat/pr-10590-context-strategy-fix
cleveragents:bugfix/m6-acms-path-matching-absolute
cleveragents:bugfix/pr-9183-bdd-tags
cleveragents:fix-pr-10975-path-matching-normalize
cleveragents:pr_fix/lsp-transport-subprocess-cleanup
cleveragents:pr-8177-validation-fix
cleveragents:feat/acms-context-show-clear-cli
cleveragents:feat/v360/plugin-architecture
cleveragents:fix/invariant-add-scope-required
cleveragents:pr-fix-10590-context-strategy
cleveragents:pr-fix-10590-local
cleveragents:pr-8662-fix
cleveragents:pr/1485
cleveragents:bugfix/8660-move-namespace-filter-inside-lock
cleveragents:pr/9460-project-show-invariants-validations
cleveragents:pr-11013
cleveragents:fix-1469-impl
cleveragents:fix/1469-impl
cleveragents:fix/cleanup-service-sandbox-cache-invalidation
cleveragents:pr-8257
cleveragents:pr-3329
cleveragents:feat/v3.2.0-decision-recording-strategize
cleveragents:fix/strategize-full-context-snapshots
cleveragents:clone-verify-test
cleveragents:fix/issue-6316-session-list-json-empty-case
cleveragents:AUTO-IMP/PR-9672-context-list-add
cleveragents:AUTO-IMP/PR-9663-storage-tiers
cleveragents:fix/issue-pr-11002
cleveragents:fix/plan-lifecycle-prompt-decision
cleveragents:fix/gemini-fallback-order-10906
cleveragents:AUTO-IMP/PR-10583-a2a-rename
cleveragents:fix-check-same-thread-migration-runner
cleveragents:d2188407
cleveragents:fix/a2a-handle-session-close-missing-session-id-pr-9250
cleveragents:fix/invariant-merge-action-scope
cleveragents:pr-fix-8179
cleveragents:bugfix/report-number-of-actors
cleveragents:bugfix/m6-devcontainer-autodiscovery-wiring
cleveragents:fix-gemini-fallback-order-10906
cleveragents:bugfix/m5-event-bus-exception-swallow
cleveragents:pr/3458
cleveragents:acms-parallel-indexing-fix
cleveragents:bugfix/m3-error-handling-fileconfig-unhandled-exception
cleveragents:acms-parallel-indexing
cleveragents:fix/resource-removal-children-check-6886
cleveragents:pr/9451-fix-tui-thinking-effort-presets
cleveragents:pr-fix-10958
cleveragents:fix/8179-remove-session-rollback-calls
cleveragents:pr/9817-plan-apply-json-envelope
cleveragents:fix/lsp-context-enrichment-acms-wiring
cleveragents:fix/cli-remove-positional-name-from-actor-add
cleveragents:fix/acms-context-cli
cleveragents:fix/tui-permissions-screen-wrong-base-class
cleveragents:bugfix/m6-session-create-suppress-exception-logging
cleveragents:fix/plan-tree-json-missing-decision-id
cleveragents:fix/plan-start-spec-alignment
cleveragents:fix-10957
cleveragents:fix/6726-tui-persona-cycling-keybinding
cleveragents:feat/plan-rollback-cli-checkpoint-restore
cleveragents:pr-8661-plan-start-alias
cleveragents:pr/1486/resource-handler-return-type
cleveragents:feature/8667-add-validation-list-command
cleveragents:auto-docs-1-mkdocs-setup
cleveragents:fix/actor-add-positional-name
cleveragents:feat/v3.3.0-merge-strategy-config
cleveragents:fix/invariant-precedence-chain-action-scope
cleveragents:improvement/agent-pr-review-pool-supervisor-tracking-prefix-complete
cleveragents:pr/fix/actor-loader-list-actors-race-condition
cleveragents:bugfix/m4-lsp-context-enrichment-acms-wiring
cleveragents:docs/auto-docs-2-v320-v330-features
cleveragents:bugfix/m-error-suppression-reactive-registry-adapter-v2
cleveragents:fix/7501-plan-repository-success-derivation
cleveragents:pr-10492
cleveragents:pr-8225
cleveragents:fix/plan-artifacts-missing-validation-apply-summary
cleveragents:feature/m9-v3.8.0-v3.9.0-documentation
cleveragents:docs/fix-automation-profile-default-supervised
cleveragents:fix/context-analysis-agent-path-traversal
cleveragents:pr-9229-path-traversal-fix
cleveragents:pr-10975
cleveragents:pr-fix-10986
cleveragents:pr/1486/fix-resource-handler-return-type
cleveragents:feat/m8/tui-main-screen
cleveragents:pr-9257-fix
cleveragents:fix/9222-guard-integration-e2e-jobs
cleveragents:refactor/clarify-behave-robot-framework-roles
cleveragents:docs/reference-glossary
cleveragents:feat/9088-a2a-message-send-stream
cleveragents:bugfix/m6-gemini-fallback-order
cleveragents:fix/validation-list-command-fixed
cleveragents:fix-executable-resource
cleveragents:test/plan-tree-correction-visual-tdd
cleveragents:auto-time/timeline-update-2026-04-18
cleveragents:pr-8179
cleveragents:spec/auto-arch-24-a2a-boundary-enforcement-adr
cleveragents:pr/10988/head
cleveragents:fix/7566-engine-cache-toctou-race
cleveragents:feat/v3.6.0-llm-provider-abstraction
cleveragents:fix/concurrency-catalog-cache-lock-7590-cleandiff
cleveragents:chore/test-infra-broad-exception-lint
cleveragents:issue-7502-fix-get-for-plan
cleveragents:fix/1500-impl
cleveragents:feat/context-show-cli-commands
cleveragents:pr-fix-7527-cache-invalidation
cleveragents:pr-fix-9407-plan-explain-structured-alternatives
cleveragents:fix/multi-scope-skill-discovery-9369
cleveragents:pr_9454
cleveragents:feat/agent-switch-cmd
cleveragents:pr-9329
cleveragents:8661-plan-start-alias
cleveragents:feat/acms-context-analysis-summaries
cleveragents:fix/invariant-add-repeatable-plan-action
cleveragents:tdd/m6-session-create-suppress-exception
cleveragents:test-push-check-only
cleveragents:pr-10889
cleveragents:pr-10889-fix
cleveragents:feature/issue-10952-provider-integration-tests
cleveragents:pr/10879-benchmark-caching-parallelism
cleveragents:bugfix/m3-eventbus-unsubscribe
cleveragents:spec/add-deleted-at-field-to-project-delete
cleveragents:fix/issue-6500-actor-context-list-regex
cleveragents:tdd/m8-tui-sqlite-session-persistence
cleveragents:fix/issue-6464-resource-add-auto-discovery
cleveragents:fix/bug-hunt-supervisor-tracking-prefix
cleveragents:feat/v3.2.0-plan-tree-cli
cleveragents:fix/issue-6491-actor-remove-format-option
cleveragents:fix/issue-6457-json-envelope-messages-text
cleveragents:improvement/agent-ca-test-infra-improver-duplicate-avoidance
cleveragents:fix/boundary-cost-budget-warning-re-trigger-7525
cleveragents:bugfix/6879-cli-format-option
cleveragents:feat/jwt-token-refresh
cleveragents:auto-discovered-stale-conflicts-review-task
cleveragents:docs/add-example-audit-log-and-security
cleveragents:docs/v3.8.0-api-and-module-guides
cleveragents:fix/issue-9169
cleveragents:improvement/reduce-redundant-ci-status-reporting
cleveragents:feat/v3.4.0-acms-index-data-model-traversal
cleveragents:bugfix/m3-sqlite-check-same-thread
cleveragents:issue-1-conversation-state
cleveragents:bugfix/m3-evlv-implementation-pool-compliance-checklist
cleveragents:feature/m9-a2a-jsonrpc
cleveragents:bugfix/m6-plan-execute-rich-output
cleveragents:fix/uat-checkpoint-prune-test-isolation
cleveragents:feature/issue-4749-split-monolithic-specification
cleveragents:bugfix/m8-suggestions-query-extraction
cleveragents:bugfix/m6-session-delete-format-json-envelope
cleveragents:bugfix/m3-langgraph-disposables
cleveragents:timeline/day-104-2026-04-14-auto-time-2
cleveragents:docs/quickstart-guide
cleveragents:fix/plan-prompt-json-timing-started
cleveragents:feat/v3.6.0-virtual-resource-types
cleveragents:feat/tui-v370/persona-registry
cleveragents:fix/1431-subgraph
cleveragents:bugfix/7529-a2a-terminal-phase-guard
cleveragents:bugfix/m3-bdd-feature-file-tags
cleveragents:ci/v360/isolate-slow-e2e-tests
cleveragents:feature/m3-consolidate-documentation
cleveragents:feature/m7-user-driven-review-agent
cleveragents:feature/m9-a2a-http
cleveragents:fix/1423-refactor
cleveragents:fix/tui-mainscreen-3state-sidebar-adr044
cleveragents:task/v3.8.0-ci-reusable-workflows
cleveragents:testbed/m9-hello
cleveragents:docs/add-label-verification-to-new-issue-creator
cleveragents:bugfix/m3-database-migration-runner-check-same-thread
cleveragents:feature/m4-plan-correction-revert
cleveragents:improvement/agent-architecture-pool-supervisor-milestone-assignment
cleveragents:docs/changelog-unreleased-cycle7
cleveragents:feature/m9-changelog-unreleased-cycle7
cleveragents:fix/issue-10512-mcptooladapter-rlock
cleveragents:fix/data-integrity-llm-trace-repository-7505
cleveragents:agents/auto-working-new
cleveragents:fix/resource-removal-guard-linked-children
cleveragents:fix/1468-impl
cleveragents:feature/1915-timezone-aware-datetime
cleveragents:feature/issue-4381-docs-add-invariantreconciliationactor-api-docs-devcontainer-discovery-module-guide-and-mkdocs-nav
cleveragents:task/ci-actor-context-mgmt-test-optimization
cleveragents:fix/7619-git-tools-base-env-toctou
cleveragents:pr-fix-8661-updates
cleveragents:feature/issue-2798-chore-agents-improve-ca-test-infra-improver-strengthen-duplicate-avoidance
cleveragents:bugfix/m3-migration-runner-check-same-thread
cleveragents:feature/issue-10952-fix-database-migration-runner-check-same-thread
cleveragents:fix/dependency-security-aiohttp-cves
cleveragents:test/uko-persistence-coverage
cleveragents:fix/security-b608-sql-fstring-migration-plan-phases
cleveragents:fix/cli-legacy-removal
cleveragents:feature/m39-auto-arch-23-minor-clarifications
cleveragents:bugfix/m3-langgraph-execute-state-bypass
cleveragents:feat/issue-6370-actor-context-clear
cleveragents:feat/acms-hot-storage-tier-lru-cache
cleveragents:feature/m3111-milestone-based-pr-prioritization
cleveragents:bugfix/m3-actor-run-response
cleveragents:fix/issue-7524-invariant-service-thread-safety-v2
cleveragents:pr-fix-10746
cleveragents:fix/tui-auto-generate-presets-actor-schema
cleveragents:feat/agent-card-discovery
cleveragents:feature/pr-10916-close-reactive-event-bus
cleveragents:feature/issue-1917-optimize-robot-actor-context-management-tests
cleveragents:feature/issue-10803-fix-nox-sessions-use-uv-sync-frozen
cleveragents:feature/issue-1923-missing-test-levels-core-module
cleveragents:feature/1928-add-test-coverage-for-tui-module
cleveragents:chore/ci-dockerfile-server-security-scan
cleveragents:task/ci-centralize-tool-versions
cleveragents:feature/m9-langgraph-platform
cleveragents:bugfix/m5-validation-attach-output-format
cleveragents:test/ci-execution-time-optimize-benchmark-regression
cleveragents:feature/issue-3105-add-mandatory-labels-to-supervisor-tracking-issue-creation
cleveragents:feat/acms-context-policy-configuration-schema
cleveragents:feat/context-sliding-window-strategy
cleveragents:feature/issue-5163-align-checkpoint-trigger-names
cleveragents:feature/issue-4221-docs-add-showcase-example-for-audit-log-and-security-commands
cleveragents:bugfix/m3-output-plan-results
cleveragents:fix/action-archive-output-panels
cleveragents:pr/9912-fix
cleveragents:fix/concurrency-catalog-cache-lock-7590
cleveragents:bugfix/executor-error-details-overwrite-mini-max
cleveragents:fix-10866-permissions-screen
cleveragents:feature/issue-7957-bug-hunt-pool-supervisor-tracking-prefix
cleveragents:fix-pr-10852
cleveragents:fix/10922-conversation-state-mgmt
cleveragents:pr-check
cleveragents:bugfix/10931-preserve-strategy-decisions-json
cleveragents:fix/10903-nox-showcase-docs
cleveragents:pr/10885-pyyaml-upgrade
cleveragents:pr-fix-10931
cleveragents:bugfix/executor-error-details-overwrite-qwen
cleveragents:fix-orchestrator-scaling-32-workers
cleveragents:fix-pr-1107-asgi-uvicorn
cleveragents:feature/m9-timeline-day-99
cleveragents:feat/issue-6369-actor-context-show
cleveragents:improvement/agent-label-compliance
cleveragents:fix-9912-branch
cleveragents:bugfix/10821-fix-tui-keybinding
cleveragents:feat/issue-6450-tui-escape-cascade
cleveragents:bugfix/m8-shell-safety-service-integration
cleveragents:fix/redaction-pattern-exception-handling
cleveragents:bugfix/m8-tui-on-input-changed
cleveragents:fix/action-schema-env-var-exfiltration
cleveragents:feature/spec-timeline-6003
cleveragents:feature/spec-timeline-6008
cleveragents:feature/issue-4746-update-spec-agents-diagnostics-all-9-providers
cleveragents:feat/v3.6.0/gemini-provider
cleveragents:pr/8194
cleveragents:tdd/prompt-input-textarea
cleveragents:feat/v3.6.0/cost-reporting-cli
cleveragents:fix/lsp-transport-security
cleveragents:feat/v3.6.0/semantic-context-strategy
cleveragents:feature/issue-10820-chore-agents-fix-bug-hunt-pool-supervisor-tracking-prefix-auto-bug-pool-to-auto-bug-sup-complete-fix
cleveragents:tdd/mN-registry-thread-safety
cleveragents:fix/v360/remove-acp-module
cleveragents:temp-squash
cleveragents:fix/v360/lsp-runtime-instantiation
cleveragents:feat/690-jsonrpc-routing
cleveragents:feat/v3.6.0-anthropic-gemini-backends
cleveragents:build/agents-system-rewrite
cleveragents:feat/v3.3.0-plan-rollback-cli
cleveragents:feat/v3.3.0-parallel-subplan-scheduler
cleveragents:feature/issue-10846-optimize-benchmark-regression-test-suite
cleveragents:feature/issue-10826-docs-spec-align-checkpoint-trigger-names-and-config-key-path-with-implementation
cleveragents:feature/issue-10744-fix-tui-convert-permissionsscreen-from-static-widget-to-proper-textual-screen-subclass
cleveragents:feature/issue-10794-feat-a2a-implement-a2a-http-transport-for-server-mode
cleveragents:fix/tui-preset-cycling
cleveragents:pr-10820
cleveragents:feature/696-implement-a2a-http-transport-for-server-mode
cleveragents:feature/issue-10792-feat-server-langgraph-platform-remotegraph-integration
cleveragents:feature/issue-1486-fix-v3-7-0-resourcehandler-return-type-1444
cleveragents:feature/issue-1488-fix-v3-7-0-resolve-issue-1432
cleveragents:bugfix/m1-plan-execute-sandbox-root
cleveragents:feature/issue-4663-day-97-schedule-adherence-update
cleveragents:feature/issue-10858-devops-run-linter
cleveragents:docs/milestone-v3.6.0-v3.7.0
cleveragents:feature/issue-10835-add-milestone-based-pr-prioritization
cleveragents:pr-8701-head
cleveragents:fix/7927-apply-phase-dod-gating
cleveragents:fix/sse-formatter-json-rpc-2.0
cleveragents:feat/v3.6.0/scope-chain-assembler-integration
cleveragents:fix/tui-bindings-block-cursor-navigation
cleveragents:fix/v360/compute-actor-impact-exceptions
cleveragents:feat/v360/openrouter-provider
cleveragents:docs/v360/cli-version-info-diagnostics
cleveragents:feat/context-semantic-chunking-strategy
cleveragents:feat/acms-cli-context-show-clear
cleveragents:feature/m7-actor-management-showcase-metadata
cleveragents:feature/m6-4213-resource-skill-showcase
cleveragents:feat/v360/anthropic-gemini-backends
cleveragents:feat/v3.6.0/safety-profile-enforcement
cleveragents:feat/context-dynamic-budget-allocation
cleveragents:refactor/v360/unify-error-handling-cli
cleveragents:fix/v370/tui-materializer-a2a
cleveragents:fix/auto-debug-agent-prompt-injection
cleveragents:refactor/v360/unify-api-naming
cleveragents:test/cli-docstring-example-validation
cleveragents:fix/v360/resource-kind-field
cleveragents:feat/v3.6.0/context-relevance-scoring
cleveragents:fix/v360/plugin-state-executing
cleveragents:fix/v360/lsp-path-traversal-file-reading
cleveragents:feat/acms-semantic-chunking-context-strategy
cleveragents:refactor/v360/unify-service-initialization
cleveragents:bugfix/m3.6.0-lsp-server-dos-message-read-timeout
cleveragents:feat/v360/pluggable-scope-chain-api-v2
cleveragents:docs/v360/actor-management-showcase
cleveragents:docs/v360/actor-removal-impact
cleveragents:docs/v360/align-depth-reduction-devcontainer
cleveragents:tdd/issue-10413-dollar-prefix-shell-mode
cleveragents:fix/issue-10503-session-export-json-stdout
cleveragents:fix/pr-10755
cleveragents:feat/v370/tui-web-mode
cleveragents:feat/v360/plugin-cli-discovery
cleveragents:fix/v360/llm-trace-latency-type
cleveragents:feat/v3.6.0/ollama-mistral-providers
cleveragents:feat/v3.6.0/adaptive-context-selector
cleveragents:feat/tui-v370/persona-registry-merge-v2
cleveragents:feat/v3.6.0/cost-tracker
cleveragents:fix/v360/resource-type-cycle-detection
cleveragents:refactor/auto-guard-1-address-todo-fixme-comments
cleveragents:feat/v3.6.0/pluggable-scope-chain
cleveragents:fix/v360/scope-chain-resolver-registration
cleveragents:test/v360/e2e-a2a-context-management
cleveragents:fix/v360/lsp-env-var-injection
cleveragents:feature/m6-sandbox-correction-invariant-docs
cleveragents:feature/m3-timeline-day97-update
cleveragents:fix/10480-validate-logic-error
cleveragents:feat/acms-cli-context-add
cleveragents:feat/acms-core-pipeline-components
cleveragents:feature/m4652-module-guides
cleveragents:feature/m5-extend-agents-diagnostics-example
cleveragents:feature/m5832-add-unreleased-changelog-entries
cleveragents:docs/add-repo-indexing-showcase
cleveragents:improvement/agent-pr-self-reviewer-blocking-vs-nonblocking
cleveragents:feature/issue-8225-validation-gate-empty-summary
cleveragents:spec/resource-type-yaml-format-canonical-5622
cleveragents:bugfix/m8179-fix-data-integrity-remove-session-rollback-calls-from-projectrepository
cleveragents:feat/v3.6.0/context-policy-strategy-config
cleveragents:test/v3.6.0/a2a-rename-regression-tests
cleveragents:fix/plan-lifecycle-root-decision-type
cleveragents:bugfix/cancel-worktree-cleanup
cleveragents:pr-10586
cleveragents:pr-9215
cleveragents:feat/issue-6357-tui-loading-states
cleveragents:temp-bug2-combined
cleveragents:timeline/day-105-2026-04-15-auto-time-1-v2
cleveragents:docs/consolidated-all-documentation
cleveragents:bugfix/m6-sandbox-reexecute-cleanup
cleveragents:fix/issue-9963-memory-service-timestamp-guards
cleveragents:docs/context-management-deep-dive-v2
cleveragents:docs/context-management-deep-dive
cleveragents:docs/agent-development-guide
cleveragents:feature/10008-file-level-correction-diff
cleveragents:feat/acms-scope-resolution-context-inheritance
cleveragents:docs/a2a-protocol-guide
cleveragents:fix/tui-bindings-reload-settings
cleveragents:docs/tui-user-guide-keybindings
cleveragents:fix/plan-generation-validate-logic
cleveragents:bugfix/issue-10408-dollar-prefix-shell-mode
cleveragents:test/issue-10500-persona-state-reset-tdd
cleveragents:docs/getting-started-tutorial
cleveragents:test/tdd-session-create-suppress-exception
cleveragents:fix/issue-10485-fallback-selector-budget-limits
cleveragents:docs/error-codes-guide
cleveragents:docs/common-tasks-recipes-guide
cleveragents:bugfix/mN-registry-thread-safety
cleveragents:test/migration-runner-sqlite-threading
cleveragents:docs/configuration-reference
cleveragents:pr-10678
cleveragents:pr-10681
cleveragents:test/issue-10510-mcptooladapter-rlock-tdd
cleveragents:feature/tui-screens-directory
cleveragents:fix/issue-10511-suppress-runtimeerror
cleveragents:pr-10676
cleveragents:fix/tui-block-cursor-bindings
cleveragents:pr-10680
cleveragents:test/issue-10502-session-export-json-tdd
cleveragents:fix/issue-10507-sqlite-check-same-thread
cleveragents:docs/installation-setup
cleveragents:test/v3.6.0/scope-chain-integration-tests
cleveragents:fix/v370/loading-throbber-restore
cleveragents:feat/v370/tui-settings-sessions-screens
cleveragents:fix/v370/tui-session-persistence
cleveragents:fix/v360/context-strategy-unification
cleveragents:fix/v370/shell-safety-regex
cleveragents:feat/v370/tui-rebase-merge
cleveragents:feat/v370/tui-complete-squashed
cleveragents:fix/v370/tui-shell-async
cleveragents:feat/v3.6.0/budget-enforcement
cleveragents:refactor/v360/decouple-cli-services
cleveragents:feat/v370/tui-session-persistence
cleveragents:auto-arch-1-spec-module-definitions
cleveragents:docs/v3.6.0-v3.7.0-updates
cleveragents:auto-time/timeline-update-2026-04-18-c3
cleveragents:auto-docs-2/add-changelog-contributing
cleveragents:auto-time/timeline-update-2026-04-18-c2
cleveragents:auto-docs-1/fix-mkdocs-nav-and-links
cleveragents:pr-5968
cleveragents:docs/timeline-day-107-2026-04-17
cleveragents:fix/issue-6323-project-context-show-output
cleveragents:improvement/agent-bug-hunt-pool-supervisor-tracking-prefix
cleveragents:auto-time/update-2026-04-17
cleveragents:docs/auto-docs-8-a2a-rename-documentation
cleveragents:auto-docs-3-v340-v350
cleveragents:docs/timeline-update-2026-04-15
cleveragents:auto-docs/initial-documentation-assessment
cleveragents:feature/m1-initial-documentation
cleveragents:fix/agent-task-list-memory-leak
cleveragents:bugfix/m4-plan-diff-correction-stub
cleveragents:pr-9247
cleveragents:docs/timeline-update-2026-04-17
cleveragents:timeline/day-106-2026-04-17-auto-time-1
cleveragents:fix/quality-gates-click82-compat
cleveragents:auto-arch-14/spec-anonymous-tool-enforcement
cleveragents:fix/issue-6441-session-create-json-output
cleveragents:fix/issue-6331-invariant-add-scope
cleveragents:timeline/day-106-2026-04-16-auto-time-1-v2
cleveragents:spec/auto-arch-23-minor-clarifications
cleveragents:timeline/day-106-2026-04-16-auto-time-2
cleveragents:docs/auto-docs-2-v380-v390
cleveragents:timeline/day-104-2026-04-14-auto-time-1
cleveragents:bugfix/m3-actor-add-v3-schema-validation
cleveragents:timeline/day-106-2026-04-16-auto-time-1
cleveragents:auto-docs/changelog-architecture-readme
cleveragents:spec/auto-arch-21-v350-autonomy-hardening
cleveragents:chore/timeline-day-105-2026-04-15
cleveragents:docs/timeline-update-2026-04-15-auto-time-1
cleveragents:timeline/day-105-2026-04-15-auto-time-1
cleveragents:benchmark-ci
cleveragents:fix/plan-phase-migration-raw-sql-root-plan-id
cleveragents:auto-arch-12/spec-acms-context-tier-hydrator
cleveragents:timeline/day-106-2026-04-15-auto-time-1
cleveragents:feat/invariant-enforcement-strategize
cleveragents:feat/plan-tree-decision-rendering
cleveragents:feat/plan-correct-revert-append-modes
cleveragents:docs/auto-docs-4-fix-conflicts
cleveragents:docs/auto-docs-1-milestone-docs-v3.0.0-v3.1.0
cleveragents:feat/v3.4.0-acms-lifecycle-policy
cleveragents:pr-9220
cleveragents:fix/a2a-facade-optional-param-validation
cleveragents:feat/ci-guard-llm-secrets
cleveragents:pr-9214
cleveragents:feat/v3.3.0-subplan-status-tracking
cleveragents:feat/v3.3.0-merge-conflict-detection
cleveragents:uat/checkpoint-rollback-merge-tests
cleveragents:fix/pr-review-pool-supervisor-prefix-mismatch
cleveragents:feat/v3.3.0-spawn-subplan-step
cleveragents:auto-time-1-day103-cycle1-session6
cleveragents:feat/v3.8.0-agent-card-endpoint
cleveragents:docs/auto-docs-cycle-24-showcase-nav
cleveragents:auto-inf-3-consolidate-behave-fixtures
cleveragents:fix/issue-7663-docs-writer-missing
cleveragents:auto-time-1-day103-cycle2
cleveragents:docs/timeline-day-104-auto-time-1
cleveragents:auto-arch-16/spec-xml-prompt-injection-mitigation
cleveragents:bugfix/m4-invariant-persistence
cleveragents:uat-a2a-facade-tests-v350
cleveragents:bugfix/m3-behave-parallel-failed-chunk-logs
cleveragents:bugfix/7664-automation-tracking-label-requirements
cleveragents:docs/auto-time-1-timeline-update-2026-04-14
cleveragents:docs/auto-docs-1-milestone-v3-updates
cleveragents:fix/issue-6344-plan-execute-rich-output
cleveragents:docs/action-config-schema-api
cleveragents:fix/bug-hunt-supervisor-nonexistent-file-preflight
cleveragents:fix/retry-policy-model-missing-fields
cleveragents:docs/validation-gate-empty-run-guard
cleveragents:auto-arch-15/spec-retry-policy-canonical-fields
cleveragents:docs/lockservice-advisory-locking
cleveragents:docs/changelog-plan-fix-4197
cleveragents:spec/milestone-plan-section
cleveragents:docs/update-changelog-recent-features
cleveragents:fix/test-infra-remove-redundant-python-variable-robot-files
cleveragents:timeline/day-104-2026-04-14-cycle2
cleveragents:fix/bdd-feature-file-tags
cleveragents:auto-arch-13/spec-default-automation-profile
cleveragents:docs/auto-docs-cycle-1-2026-04-12
cleveragents:docs/cycle-1-git-worktree-sandbox
cleveragents:spec/architecture-critical-gap-fixes
cleveragents:docs/timeline-day-104-auto-time-2
cleveragents:auto-arch-1/add-v380-v390-milestone-plan
cleveragents:docs/developer-setup-guide
cleveragents:fix/auto-profile-spec-prose-description
cleveragents:auto-arch-10/spec-tui-a2a-integration-layer
cleveragents:spec/resource-event-types-clarification
cleveragents:auto-docs-4/changelog-and-observability
cleveragents:auto-arch-4/adr-049-layered-boundary-enforcement
cleveragents:docs/a2a-protocol-autonomy-hardening
cleveragents:auto-arch-9/spec-v3.8.0-milestone-plan
cleveragents:docs/auto-docs-3-reference-index
cleveragents:auto-arch-7/spec-apply-git-worktree
cleveragents:docs/timeline-day104-cycle1-auto-time-4
cleveragents:docs/auto-docs-cycle-1-changelog-updates
cleveragents:auto-arch-6/adr-049-spec-restructuring
cleveragents:docs/auto-docs-1-v340-acms-context-management
cleveragents:docs/auto-docs-1-v320-v330-cli-reference
cleveragents:auto-arch-5/v3.9.0-milestone-plan
cleveragents:test/create-scripts
cleveragents:auto-time-1-day104
cleveragents:timeline/day-104-2026-04-14
cleveragents:docs/auto-time-4-day103-cycle5
cleveragents:auto-time-3-day103-cycle4
cleveragents:auto-docs-5-architecture-overview
cleveragents:spec/three-way-merge-strategy-v3.3.0
cleveragents:spec/checkpoint-system-v3.3.0
cleveragents:auto-docs-4-api-docs-update
cleveragents:auto-docs-1-changelog-expansion
cleveragents:spec/invariant-management-system-v3.2.0
cleveragents:pr-8289
cleveragents:spec/plan-correction-engine-v3.2.0
cleveragents:spec/layered-architecture-boundary-policy
cleveragents:spec/tui-materializer-a2a-integration-v3.7.0
cleveragents:spec/decision-recording-system-v3.2.0
cleveragents:docs/auto-docs-1-milestone-overview
cleveragents:pr-7484
cleveragents:pr-4212
cleveragents:auto-arch-3/v3.8.0-milestone-plan
cleveragents:auto-docs-6/troubleshooting-and-config
cleveragents:auto-time-1-day103-session5
cleveragents:auto-docs-5/contributor-guide-and-readme
cleveragents:docs/plan-tree-ulid-examples
cleveragents:docs/m3-spec-clarify-path-datetime-plugin-contracts
cleveragents:docs/auto-docs-cycle-10-diagnostics-ref
cleveragents:auto-docs-3/user-guide-and-architecture
cleveragents:docs/cycle-7-changelog-update
cleveragents:spec/reconciliation-failure-behavior
cleveragents:auto-docs-2/api-documentation
cleveragents:auto-arch-2/adr-053-repositories-decomposition
cleveragents:auto-docs-1/release-notes-v3.0-v3.1
cleveragents:spec/update-validation-attach-project-delete
cleveragents:spec/architecture-cycle2-impl-clarifications
cleveragents:auto-arch-1/adr-049-052-violations
cleveragents:auto-time-1-day103
cleveragents:docs/auto-docs-cycle-13-updates
cleveragents:docs/timeline-day-102-auto-time
cleveragents:timeline/day-103-2026-04-13
cleveragents:spec/arch-invariant-cli-completeness
cleveragents:spec/update-cycle1-validation-attach-project-delete
cleveragents:docs/add-session-management-showcase
cleveragents:spec/arch-sandbox-path-correction-cycle9
cleveragents:spec/architecture-v380-milestone-plan
cleveragents:docs/auto-docs-cycle-12-updates
cleveragents:docs/cycle-1-validation-gate-fix
cleveragents:docs/2026-04-08-unreleased-changelog
cleveragents:docs/auto-docs-cycle-2-2026-04-10
cleveragents:docs/session-4615-2026-04-08-cycle1
cleveragents:feat/issue-6361-shell-safety-service-tui
cleveragents:spec/architecture-cycle-25-new-features
cleveragents:fix/issue-6345-automation-profile-add-output
cleveragents:docs/timeline-day-102-2026-04-12
cleveragents:docs/cycle-2-git-worktree-acms-hydrator
cleveragents:spec/arch-sandbox-cleanup-discovery
cleveragents:docs/timeline-day96-2026-04-08
cleveragents:docs/auto-docs-cycle-11
cleveragents:spec/fix-sandbox-strategy-protocol-name
cleveragents:spec/arch-acms-tier-hydration
cleveragents:fix/v3.4.0/context-settings-defaults
cleveragents:docs/add-example-repl-and-actor-run
cleveragents:docs/auto-docs-cycle-10-updates
cleveragents:docs/session-4-2026-04-08-updates
cleveragents:docs/showcase-all-examples-consolidated
cleveragents:docs/timeline-day-97
cleveragents:docs/acms-context-hydrator-cycle2
cleveragents:docs/add-example-output-format-flags
cleveragents:spec/arch-failfast-cancel-semantics
cleveragents:timeline/day-101-2026-04-11
cleveragents:docs/timeline-day99-2026-04-09-v2
cleveragents:docs/auto-docs-cycle-2-worktree-acms
cleveragents:spec/architecture-v3.8.0-milestone-plan
cleveragents:docs/api-lsp-acms-reference
cleveragents:improvement/agent-bug-hunt-pool-supervisor-yaml-syntax-fix
cleveragents:spec/project-delete-deleted-at-field
cleveragents:spec/architecture-provider-registry-tui-materializer
cleveragents:spec/document-reconciliation-blocked-error-5942
cleveragents:fix/issue-7482-git-log-injection
cleveragents:spec/devcontainer-auto-discovery-schema
cleveragents:feat/issue-6350-conversation-content-pruning
cleveragents:docs/update-module-guides-2026-04-10
cleveragents:timeline/day-100-2026-04-10-auto-time-cycle1
cleveragents:timeline/day-99-2026-04-09-auto-time-v2
cleveragents:docs/cycle-3-module-guides
cleveragents:timeline/day-99-2026-04-09-auto-time
cleveragents:pr-4226
cleveragents:spec/additional-llm-providers-gemini-groq-cohere-together-ollama-mistral
cleveragents:spec/document-context-tier-hydrator-6175
cleveragents:docs/timeline-day99-2026-04-09
cleveragents:spec/invariant-cli-clarifications
cleveragents:docs/add-example-project-init-and-context-management
cleveragents:spec/reconciliation-blocked-error-documentation
cleveragents:spec/fix-invariant-precedence-reference-5861
cleveragents:spec/fix-plan-correct-accepts-plan-id-5558
cleveragents:spec/fix-validation-attach-synopsis-5328
cleveragents:docs/timeline-day-99-cycle-1
cleveragents:docs/timeline-day-99-cycle-2
cleveragents:fix/actor-context-list-regex-arg
cleveragents:docs/timeline-day-99-cycle-3
cleveragents:spec/arch-security-mode-init
cleveragents:docs/auto-docs-cycle-9-updates
cleveragents:fix-resource-fix-resource-remove-to-check-correct-edge-table
cleveragents:feat/issue-6434-tui-env-var-expansion
cleveragents:fix/issue-6321-plan-prompt-timing-field
cleveragents:fix/issue-6322-resource-add-url-flag
cleveragents:feat/issue-6348-sessions-screen
cleveragents:spec/plan-show-command
cleveragents:temp
cleveragents:feat/harden-label-restrictions-1775753628
cleveragents:spec/invariant-reconciliation-failure-behavior
cleveragents:spec/add-reconciliation-failure-behavior-5942
cleveragents:spec/architecture-corrections-cycle3
cleveragents:spec/checkpoint-trigger-names-and-config-key-fix
cleveragents:spec/fix-ai-provider-interface-5801
cleveragents:spec/azure-api-version-default-update
cleveragents:docs/auto-docs-writer-cycle1-labels
cleveragents:spec/fix-resource-type-yaml-format-5622
cleveragents:spec/add-plan-revert-resume-commands-5574
cleveragents:docs/auto-docs-cycle-1-2026-04-09
cleveragents:spec/plan-correct-plan-id-or-decision-id-5558
cleveragents:spec/fix-subgraph-node-actor-ref-field-5427
cleveragents:issue/5284-master-ci-fix
cleveragents:timeline/day-99-2026-04-09-v2
cleveragents:merge-me
cleveragents:docs/session-3377-initial-docs-update
cleveragents:fix/llm-provider-subpackage-exports
cleveragents:spec/arce-acronym-and-tui-keybinding-fixes
cleveragents:spec/architecture-corrections-cycle2
cleveragents:spec/architecture-corrections-cycle1
cleveragents:docs/cycle-1-updates
cleveragents:spec/tui-clarifications-session-export-persona
cleveragents:docs/session-4940-2026-04-08-cycle1
cleveragents:spec/architecture-milestone-plan-v3.2-v3.7
cleveragents:docs/session-4743-2026-04-08-cycle1
cleveragents:docs/timeline-day-98
cleveragents:fix/plan-lifecycle-service-rollback-method
cleveragents:docs/timeline-day98-2026-04-08-v2
cleveragents:docs/add-example-action-and-plan-management
cleveragents:docs/session-2026-04-06-updates
cleveragents:docs/ca-docs-writer-v3.8.1-2026-04-05
cleveragents:fix/session-tell-stub-missing-panels-and-actor-execution
cleveragents:improvement/agent-arch-guard-clone-failure-handling
cleveragents:improvement/agent-test-infra-health-spam-fix-v2
cleveragents:fix-tdd-invert-non-assertion-exceptions
cleveragents:improvement/agent-arch-guard-clone-failure
cleveragents:bugfix/3472-fix-tdd-inversion-logic
cleveragents:bugfix/989-fix-persistence-json-decode-error
cleveragents:improvement/agent-supervisor-tracking-labels-v2
cleveragents:docs/timeline-day95-v2
cleveragents:docs/timeline-day95-final
cleveragents:docs/update-lsp-api-and-changelog
cleveragents:fix/lsp-resource-handler-module-missing
cleveragents:docs/timeline-day95-final-2026-04-05
cleveragents:fix/a2a-plan-correct-rollback-wiring
cleveragents:docs/add-lsp-api-and-changelog-2026-04-05
cleveragents:fix/tool-registry-validation-type-discriminator
cleveragents:docs/v3.7.0-documentation-update
cleveragents:docs/ca-docs-writer-2026-04-05-cycle2
cleveragents:fix/invariant-set-merge-action-scope
cleveragents:docs/unreleased-feature-docs
cleveragents:fix/concurrency-cost-tracker-record-usage-race-condition
cleveragents:improvement/agent-ca-test-infra-improver-failure-handling
cleveragents:docs/update-changelog-mcp-plan-ci-2026-04-05
cleveragents:improvement/agent-pr-reviewer-milestone-prioritization
cleveragents:docs/timeline-day95-refresh-2026-04-05
cleveragents:improvement/agent-mandatory-labels-tracking-issues
cleveragents:docs/api-domain-providers-changelog-2026-04-05
cleveragents:docs/ca-docs-writer-2026-04-05
cleveragents:docs/timeline-day95-refresh
cleveragents:fix/skill-add-include-validation
cleveragents:docs/timeline-day-95-2026-04-05-update3
cleveragents:docs/timeline-day-95-2026-04-05-update2
cleveragents:docs/ci-incident-runbook-2597
cleveragents:improvement/agent-ca-test-infra-improver-worker-api-mode
cleveragents:docs/shell-safety-api-and-readme-highlights
cleveragents:docs/timeline-day-55-2026-04-04-v2
cleveragents:docs/timeline-day-55-2026-04-04
cleveragents:docs/timeline-day54-update3
cleveragents:improvement/agent-ca-test-infra-improver-fixes
cleveragents:spec/restructure-monolithic-to-split
cleveragents:docs/timeline-day54-update-v2
cleveragents:docs/timeline-day54-update
cleveragents:fix-agents
cleveragents:docs/shell-safety-and-domain-base-model
cleveragents:fix/1452-impl
cleveragents:fix/1473-plan-cancel
cleveragents:fix/1425-test
cleveragents:fix/1426-config
cleveragents:fix/1421-perf
cleveragents:fix/1424-impl
cleveragents:test/int-wf16-devcontainer
cleveragents:feature/m8-tui-persona-export
cleveragents:feature/m7-post-resource-equivalence
cleveragents:test/e2e-m4-acceptance
cleveragents:feature/m6-tantivy-backend
cleveragents:feature/m6-estimation
cleveragents:feature/m6-estimation-report-model
cleveragents:feature/observability-prometheus-audit
cleveragents:feat/server-auth-namespace
cleveragents:feature/m8-session-editing
cleveragents:feature/llm-actor-subplan-wiring
cleveragents:feature/m8-tui-first-run-actor-selection
cleveragents:feature/m8-tui-conversation-block-catalog
cleveragents:feature/m8-tui-settings-screen
cleveragents:feature/m7-e2e-porting
cleveragents:feature/m6-estimation-historical-stats
cleveragents:feature/m8-tui-persona-export-import
cleveragents:feature/m8-tui-sessions-screen
cleveragents:feature/m7-graph-backend
cleveragents:feature/m8-tui-block-context-menu
cleveragents:feature/m8-tui-tool-call-expand
cleveragents:feature/m4-missing-builtin-tools
cleveragents:docs/v3.7.0-release-docs
cleveragents:feature/m8-tui-session-export
cleveragents:test/e2e-wf15-disaster-recovery
cleveragents:test/e2e-wf03-refactoring
cleveragents:test/e2e-m3-acceptance
cleveragents:feature/m8-tui-prompt-history
cleveragents:feature/m8-tui-actor-thought-block-rendering
cleveragents:bugfix/m6-build-hierarchy-child-ids
cleveragents:feature/resource-inheritance-wiring
cleveragents:test/e2e-wf09-session
cleveragents:test/e2e-wf06-doc-generation
cleveragents:test/e2e-wf08-cloud-infra
cleveragents:test/e2e-wf02-test-generation
cleveragents:test/e2e-wf13-custom-profile
cleveragents:test/e2e-wf11-graph-actor
cleveragents:test/e2e-wf01-hello-world
cleveragents:test/int-wf17-explicit-container
cleveragents:test/int-wf12-hierarchical
cleveragents:test/int-wf15-disaster-recovery
cleveragents:test/int-wf13-custom-profile
cleveragents:test/int-wf03-refactoring
cleveragents:test/int-wf11-graph-actor
cleveragents:test/int-wf10-batch
cleveragents:test/int-wf09-session
cleveragents:feature/m3-tdd-issue-consistency-gate
cleveragents:feature/m3-invariant-enforcement-strategize
cleveragents:test/int-wf18-container-clone
cleveragents:test/int-wf01-hello-world
cleveragents:feature/m6-diagnostic-dashboard-health-categories
cleveragents:feature/m6-cli-polish
cleveragents:fix/e2e-db-isolation
cleveragents:feature/m7-post-tui
cleveragents:feature/m9-asgi-endpoint
cleveragents:feature/m7-post-server
cleveragents:tdd/m7-audit-session-race
cleveragents:tdd/m3-skill-add-regression
cleveragents:feature/m9-remote-repos
cleveragents:feature/fs-mount-file-types
cleveragents:tdd/container-resolve-crash
cleveragents:test/e2e-m1-acceptance
cleveragents:test/e2e-m2-acceptance
cleveragents:eugen.thaci-patch-3
cleveragents:eugen.thaci-patch-2
cleveragents:eugen.thaci-patch-1
cleveragents:aditya-fix-latest
cleveragents:feature/m4-secret-masking-llm-context
cleveragents:aditya-fix
cleveragents:refactor/m3-replace-mktemp
cleveragents:refactor/m3-remove-unittest-mock-integration
cleveragents:refactor/m3-remove-robot-mock-imports
cleveragents:refactor/m3-remove-mock-llm-integration
cleveragents:docs/improved-menu-adr
cleveragents:feature/m7-post-auth
cleveragents:feature/m3-fix-resource-bootstrap
cleveragents:feature/post-safety-profile-tests
cleveragents:integration/batch-2026-03-02
cleveragents:feat/slipcover
cleveragents:docs/safety-profile-spec-composition
cleveragents:integrate/freemo-batch-1
cleveragents:feature/m4-error-recovery
cleveragents:feature/m4-security-template
cleveragents:feature/m3-validation-pipeline
cleveragents:develop-aditya-2
cleveragents:feature/m3-diff-review
cleveragents:feature/m3-validation-apply
cleveragents:feature/m6-acp-stubs
cleveragents:feature/m4-correction-flows
cleveragents:feature/m1-plan-execute-runtime
cleveragents:feature/m4-security-exceptions
cleveragents:feature/m4-definition-of-done
cleveragents:feature/m4-correction-model
cleveragents:feature/m1-apply-pipeline
cleveragents:feature/m5-automation-profiles
cleveragents:feature/m2-lsp-stubs
cleveragents:feature/m3-invariants
cleveragents:feature/m1-actor-runtime
cleveragents:feature/docs-v2-restore
cleveragents:feature/m6-perf-scale
cleveragents:feature/m6-validation-edge
cleveragents:feature/m3-session-cli
cleveragents:feature/m1-persistence-tests-robot
cleveragents:feature/m3-config-cli
cleveragents:feature/m1-cli-tests-robot
cleveragents:feature/m5-subplan-tests
cleveragents:feature/m6-review-playbook
cleveragents:feature/aditya-m3-actor-loader
cleveragents:feature/m3-skill-protocol
cleveragents:feature/m4-automation-legacy-cleanup
cleveragents:feature/m3-change-model
cleveragents:feature/m3-skill-git
cleveragents:feature/m3-skill-registry
cleveragents:feature/m4-security-eval
cleveragents:fix/robot-tests
cleveragents:feature/m3-actor-registry
cleveragents:feature/m3-tool-cli
cleveragents:feature/m4-automation-profiles-cli
cleveragents:feature/m2-resource-cli-extensions
cleveragents:feature/m3-actor-loader
cleveragents:feature/m3-tool-domain-robot
cleveragents:feature/m3-skill-domain-robot
cleveragents:feature/m3-skill-cli
cleveragents:feature/m1-resource-db-robot-tests
cleveragents:feature/m3-session-domain-robot
cleveragents:feature/m1-persistence-tests
cleveragents:feature/m1-cli-tests
cleveragents:ten-branches-backup
cleveragents:feature/m3-skill-schema
cleveragents:feature/m3-session-persistence
cleveragents:feature/automation-profiles-and-resource-dag
cleveragents:feature/m1-plan-repo
cleveragents:feature/m1-db-plan-phase-rebaseline
cleveragents:feat/B4-sandbox
cleveragents:feat/B2-cli-wiring
cleveragents:feat/B5-project-persistence
cleveragents:feat/B1-project-data-models
cleveragents:feat/b1-data-models
cleveragents:feat-repo-manager-and-sourcegraph-support
cleveragents:feat/actor-schema
cleveragents:fix/component-isolation-security-fix
cleveragents:feat/ontology-agent
cleveragents:fix/error-handling-security-fix
cleveragents:fix/concurrency-security-fix
cleveragents:fix/serialization-security-fix
cleveragents:fix/server-side-request-forgery-security-fix
cleveragents:fix/file-system-security
cleveragents:fix/template-injection-fix
cleveragents:fix/data-injection-fix
cleveragents:tests/unit-tests
cleveragents:latest/poetry-generator
cleveragents:poetry-generator
cleveragents:config/contract-metadata-extractor
cleveragents:docs/readme-yaml-syntax
cleveragents:config/memory-yaml
cleveragents:fix/double-response
cleveragents:brent-additions
cleveragents:intel_2_demo
No reviewers
Labels
Clear labels
auto/needs-reevaluation
Controller deferred this PR; awaiting Phase 6+ scope-evaluator or operator re-enablement.
controller-managed
Auto-agents controller manages this PR/issue (see tools/controller/deploy/RUNBOOK.md). Remove this label to abandon controller management.
auto/blocked-by-deps
PR blocked by an open issue dependency. Operator must close the dep (or remove the dependency link) before the merge driver can act. Auto-cleared by merge_drive when no open deps remain.
auto/ci-timeout
Most recent merge cycle hit CI timeout. Driver excludes this PR while last merge_cycle row is < 30 min old; label persists thereafter as visible history.
auto/claimed-implementer
Currently being processed by an implementer worker.
auto/claimed-merge
Currently being processed by the merge driver.
auto/claimed-reviewer
Currently being processed by a reviewer worker.
auto/driver-down
Merge driver heartbeat stale; pipeline halted. Closed automatically on next clean tick.
auto/invariant-violation
Detected master commit violating the strict merge invariant. Tracked as an issue (not a PR label); kept here for label completeness.
auto/last-attempt-tier-0
In-cycle escalation: most recent attempt ran at the Tier 0 slot (`tier-0`). Slot's model defined in .opencode/models/tiers.yaml.
auto/last-attempt-tier-1
In-cycle escalation: most recent attempt ran at the Tier 1 slot (`tier-1`). Slot's model defined in .opencode/models/tiers.yaml.
auto/last-attempt-tier-2
In-cycle escalation: most recent attempt ran at the Tier 2 slot (`tier-2`). Slot's model defined in .opencode/models/tiers.yaml. Gated behind IMPLEMENTER_ESCALATION_TIER2_ENABLED.
auto/last-attempt-tier-min
In-cycle escalation: most recent attempt ran at the Tier -1 slot (`tier-min`). Slot's model defined in .opencode/models/tiers.yaml. Suffix is ``-min`` (not ``--1``) so the Forgejo UI reads naturally.
Automation Tracking
Tracking issues used by the AI Automation system for agents to communicate and report.
auto/needs-conflict-resolution
Rebase conflict needs LLM conflict-resolver.
auto/needs-implementer
Failing CI needs implementer attention.
auto/postmortem
Documenting a driver incident or rollback.
auto/ready-to-merge
Reviewer has APPROVED this PR and no later REQUEST_CHANGES is outstanding. The merge driver requires this label to even consider a PR for merging. Set by the reviewer worker on APPROVE; cleared on REQUEST_CHANGES.
auto/restart-throttled
Train repeatedly lost master-tempo races. Driver excludes via merge_cycle until cooldown elapses; label persists as visible history.
auto/revert
Revert PR backing out an invariant violation. Fast-tracked through the merge driver.
auto/sentinel
Sentinel PR duplicated from upstream into a personal fork by tools/duplicate_prs_to_fork.py for pipeline testing. Lives only in the fork; the canonical pipeline never sees it.
auto/stale-inactivity
No implementer activity for N days. Flagged for human review. Auto-cleared on next push to head branch.
auto/unstable
Repeatedly fails on current master (>= 3 ci-fail-on-rebased-sha releases in 12 h). Excluded from driver until human triage.
Blocked
A ticket in a blocked state and unable to complete until some other task is completed first.
Bounty
$100
A bounty of $100 for any open-source contributor who provides a MR that solves this issue
Bounty
$1000
A bounty of $1000 for any open-source contributor who provides a MR that solves this issue
Bounty
$10000
A bounty of $10000 for any open-source contributor who provides a MR that solves this issue
Bounty
$20
A bounty of $20 for any open-source contributor who provides a MR that solves this issue
Bounty
$2000
A bounty of $2000 for any open-source contributor who provides a MR that solves this issue
Bounty
$250
A bounty of $250 for any open-source contributor who provides a MR that solves this issue
Bounty
$50
A bounty of $50 for any open-source contributor who provides a MR that solves this issue
Bounty
$500
A bounty of $500 for any open-source contributor who provides a MR that solves this issue
Bounty
$5000
A bounty of $5000 for any open-source contributor who provides a MR that solves this issue
Bounty
$750
A bounty of $750 for any open-source contributor who provides a MR that solves this issue
MoSCoW
Could have
Could have feature in order to satisfy the epic/legendary.
MoSCoW
Must have
Must have feature in order to satisfy the epic/legendary.
MoSCoW
Should have
Should have feature in order to satisfy the epic/legendary.
Needs Feedback
There are questions in the ticket that can not be completed until the project owner provides clarity.
Points
1
1 man-hours worth of work for an expert with no learning curve.
Points
13
13 man-hours worth of work for an expert with no learning curve.
Points
2
2 man-hours worth of work for an expert with no learning curve.
Points
21
21 man-hours worth of work for an expert with no learning curve.
Points
3
3 man-hours worth of work for an expert with no learning curve.
Points
34
34 man-hours worth of work for an expert with no learning curve.
Points
5
5 man-hours worth of work for an expert with no learning curve.
Points
55
55 man-hours worth of work for an expert with no learning curve.
Points
8
8 man-hours worth of work for an expert with no learning curve.
Points
88
88 man-hours worth of work for an expert with no learning curve.
Priority
Backlog
This ticket has backlogged priority and is not to be worked on yet
Priority
CI Blocker
Critical priority issue that blocks CI/CD pipeline and prevents PR merges
Priority
Critical
The priority is critical
Priority
High
The priority is high
Priority
Low
The priority is low
Priority
Medium
The priority is medium
Signed-off: Owner
When an epic or legendary is in review it must be signed off by owner, tech lead, and scrum master before being marked as completed.
Signed-off: Scrum Master
When an epic or legendary is in review it must be signed off by owner, tech lead, and scrum master before being marked as completed.
Signed-off: Tech Lead
When an epic or legendary is in review it must be signed off by owner, tech lead, and scrum master before being marked as completed.
Spike
A ticket for learning a tool or technology that is needed to be able to do future planning and design.
State
Completed
The ticket has been fully implemented, completed, and merged with the source code. This label should only be applied once a ticket is closed.
State
Duplicate
A ticket that represents the same content as an existing ticket.
State
In Progress
A ticket that is actively being developed.
State
In Review
A ticket that has had some code completed to implement but is waiting to pass peer review and is not yet merged in.
State
Paused
This ticket's work started but wasn't finished. It's on hold (likely in a feature branch) and will be resumed later, either due to a blocker or a delay.
State
Unverified
All new tickets start in this state. A developer may set it to show the ticket is unverified. This means we haven't agreed to work on it. It will either move to a verified state or be closed as wontdo.
State
Verified
The issue has been verified by a developer as legitimate. It will be worked on and verified tickets are now considered part of the backlog.
State
Wont Do
This ticket has been decided it wont be done. This may mean the bug has been determined to not be real (cant verify) or the feature is one we have decided we dont want to adopt.
Type
Automation
Any edits or discussion about the AI automated coding system.
Type
Bug
Something that doesnt work as intended.
Type
Discussion
Anytime a ticket represents a discussion about a subject and doesnt fall into one of the other categories.
Type
Documentation
An error or improvement needed in the documentation.
Type
Epic
Any first tier epic. That is, an epic which contains only issues as children and will not have sub-epics.
Type
Feature
Some new functionality not present.
Type
Legendary
A type of Epic which will contain other Epics.
Type
Refactor
A code change that restructures existing code without changing its external behavior.
Type
Support
Someone needs help using the project.
Type
Task
A generic task that doesnt fit into the other type categories.
Type
Testing
Work exclusively focusing on fixing or expanding testing.
No labels
auto/needs-reevaluation
controller-managed
auto/blocked-by-deps
auto/ci-timeout
auto/claimed-implementer
auto/claimed-merge
auto/claimed-reviewer
auto/driver-down
auto/invariant-violation
auto/last-attempt-tier-0
auto/last-attempt-tier-1
auto/last-attempt-tier-2
auto/last-attempt-tier-min
Automation Tracking
auto/needs-conflict-resolution
auto/needs-implementer
auto/postmortem
auto/ready-to-merge
auto/restart-throttled
auto/revert
auto/sentinel
auto/stale-inactivity
auto/unstable
Blocked
Bounty
$100
Bounty
$1000
Bounty
$10000
Bounty
$20
Bounty
$2000
Bounty
$250
Bounty
$50
Bounty
$500
Bounty
$5000
Bounty
$750
MoSCoW
Could have
MoSCoW
Must have
MoSCoW
Should have
Needs Feedback
Points
1
Points
13
Points
2
Points
21
Points
3
Points
34
Points
5
Points
55
Points
8
Points
88
Priority
Backlog
Priority
CI Blocker
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Signed-off: Owner
Signed-off: Scrum Master
Signed-off: Tech Lead
Spike
State
Completed
State
Duplicate
State
In Progress
State
In Review
State
Paused
State
Unverified
State
Verified
State
Wont Do
Type
Automation
Type
Bug
Type
Discussion
Type
Documentation
Type
Epic
Type
Feature
Type
Legendary
Type
Refactor
Type
Support
Type
Task
Type
Testing
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
cleveragents/cleveragents-core!10892
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "bugfix/mcp-race-condition-start"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Fixes a critical race condition in
McpClient.start()where thethreading.RLockwas released after checking_startedbut before callingconnect()anddiscover_tools(). Concurrent callers could both pass the idempotency check and initialize the MCP server connection multiple times.Changes
src/cleveragents/mcp/client.py_state == McpClientState.STARTINGto the idempotency guard inside the lock instart()_state = STARTINGand proceeds; all subsequent concurrent callers seeSTARTINGand return immediatelyfeatures/tdd_mcp_client_race_condition_start.feature@tdd_issue @tdd_issue_10438start()calls with 5 and 10 threads usingthreading.Barrierfeatures/steps/tdd_mcp_client_race_condition_start_steps.py_CountingTransportthat recordsconnect()anddiscover_tools()call countsstart()callsRoot Cause
The original
start()method:Thread A and Thread B could both pass the
_startedcheck (stillFalse) and both callconnect()anddiscover_tools()concurrently.Fix
The second concurrent caller now sees
_state == STARTINGand returns immediately.Closes #10438
This PR blocks issue #10438
Automated by CleverAgents Bot
Supervisor: Implementation | Agent: task-implementor
Review Summary
This PR is a clean, minimal fix for a real race condition in
McpClient.start()— thank you for the careful approach.What was reviewed
src/cleveragents/mcp/client.py(the STARTING state guard)features/tdd_mcp_client_race_condition_start.feature- 3 scenarios)_CountingTransport(220 lines)1. CORRECTNESS
The fix is correct and surgical. By adding
_state == McpClientState.STARTINGto the condition insideself._lock, the first thread setsSTARTINGand proceeds; any subsequent concurrent caller acquires the lock, seesSTARTING, and returns immediately. This is the classic double-checked locking pattern and correctly closes the race window identified in issue #10438. Both acceptance criteria (exactly oneconnect()and exactly onediscover_tools()invocation under concurrentstart()) are directly tested.2. SPECIFICATION ALIGNMENT
The fix aligns with the module spec -
McpClient.start()is documented as idempotent, and the docstring is updated to document the thread-safety guarantee.3. TEST QUALITY
Good TDD regression test with
@tdd_issue @tdd_issue_10438tag covering the exact failure mode. Three well-named scenarios test concurrent starts (5 and 10 threads) and sequential idempotency. The_CountingTransportcleverly wrapsMockMCPTransportto count invocations without modifying the mock itself. Thread errors, deadlocks, and broken barriers are all asserted.Suggestion: The
@tdd_issue_Ntag on the feature file uses underscore - check what other TDD tests use for consistency.4. TYPE SAFETY
All new code (220 lines) has correct type annotations using
typing.Any, BehaveContext,int, andlisttype hints properly. Zero# type: ignoreanywhere - clean.5. READABILITY
Clear, descriptive names throughout. The
_CountingTransportinner class is self-contained in the test module, well-documented with a thorough module-level docstring explaining the test purpose, the bug, the fix, and how race detection works.6. PERFORMANCE
No concerns - the fix is O(1) inside a lock and the test uses lightweight daemon threads.
7. SECURITY
No new secrets, injection vectors, or unsafe patterns.
8. CODE STYLE
9. DOCUMENTATION
Docstring for
start()updated to document the thread-safety guarantee. Module docstrings on the test files explain the bug and the test strategy in detail.10. COMMIT AND PR QUALITY - ISSUES FOUND
Fix race condition in McpClient.start() double initializationIssues that need attention:
Missing labels (blocking for merge): PR has zero labels - needs exactly one
Type/BugandPriority/Critical(the linked bug issue #10438 is Priority/Critical).TDD companion issue #10402: Listed as Blocked by in the issue body, but the Forgejo API
/issues/10438/dependenciesreturns empty. The PR body says This PR blocks issue #10438, but the TDD issue #10402 should also have a depends on link to this PR with a Closes #10402 in the PR body. Please verify the dependency graph: TDD issue should block the bug issue.CI failing: lint and status-check checks are failing. Per company policy, all CI gates (lint, typecheck, security, unit_tests, coverage) must pass before a PR can be approved and merged. The coverage job was skipped entirely.
Non-blocking suggestions
@tdd_issue_10438- most TDD tests use a consistent tag format. Ensure consistency across the codebase.nox -s coverage_reportlocally to verify the new code paths achieve the 97% target.@tdd_issueand@tdd_issue_10438tags should both be on the same feature file.Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
This PR is a massive scope violation. While the title announces a fix for a single race condition in McpClient.start(), the diff contains roughly 20+ unrelated file changes across 12 files.
Unrelated changes in this PR (not related to the McpClient fix):
Related to the McpClient fix:
Blocking Issues:
Atomicity violation (Contributing.md): The PR bundles at least 15 separate concerns into one submission. The Contributing guide states: If describing it requires and between unrelated actions then split.
CI lint is failing: The ci.yml change is a deliberate breaking change. CI must pass before review per company policy.
TDD guards deleted: Three existing TDD tests (#4750, #10395, #10371) are deleted without justification.
Breaking config changes: Checkpointing config format change represents a breaking spec change.
Breaking behavior changes: --update flag no longer warns for non-existent profiles; hyphens now accepted in argument names.
What works well:
Required Action:
Split this PR into multiple atomic PRs. Only the McpClient fix + TDD tests should be one PR.
Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
Formal review submitted: REQUEST_CHANGES (ID 7021). See the review for detailed findings — this PR bundles at least 15 independent changes across 12 files that must be split into separate atomic PRs.
Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
Review Summary
This PR fixes a real race condition in
McpClient.start()(issue #10438). The fix is correct, the tests are well-structured, and the code follows project conventions. However, two required merge gates are not satisfied:Blocking Issues
CI lint check is failing — The
CI / lint (pull_request)job reports failure. Per company policy, all CI gates (lint, typecheck, security, unit_tests, coverage) must pass before a PR can be merged. The root cause is likely the# ── Given ──,# ── When ──,# ── Then ──separator comments in the step file containing unicode en-dashes that may violate ruff line-length or format rules. Runruff check features/steps/tdd_mcp_client_race_condition_start_steps.pylocally to identify and fix.PR has no Type/ label — The PR is missing the mandatory
Type/Buglabel. Issue #10438 is classified asType/BugwithPriority/Critical, so the PR should carry theType/Buglabel for completeness.CI coverage job was skipped —
CI / coverage (pull_request)shows as skipped rather than passing. Coverage must report >= 97% as a hard merge gate.Category Assessment
CORRECTNESS — The fix correctly adds
_state == McpClientState.STARTINGto the idempotency guard inside the lock. The race window is closed. Error paths properly reset state to ERROR. Subsequent calls after ERROR will retry (correct behavior).SPECIFICATION ALIGNMENT — The updated docstring accurately documents the thread-safety guarantee. No spec changes needed for this bug fix.
TEST QUALITY — Excellent. TDD regression test tagged
@tdd_issue @tdd_issue_10438. Three BDD scenarios cover concurrent (5 and 10 threads), post-state, and sequential idempotency. The_CountingTransporttest double cleanly records method call counts. Barrier-based thread synchronisation maximises race probability.TYPE SAFETY — All annotations present. No
# type: ignore.TYPE_CHECKINGguard used correctly.READABILITY — Clear names, well-structured step definitions, comprehensive docstrings. The Gherkin scenarios read as living documentation.
PERFORMANCE — Negligible overhead (one extra boolean comparison per
start()call under lock).SECURITY — No concerns. Lock-based synchronisation is correct.
CODE STYLE — Files well under 500 lines. SOLID principles followed. The unicode separator comments in the step file are the probable source of the lint failure.
DOCUMENTATION — Docstring updated to document concurrency guarantee. Feature file serves as comprehensive specification.
COMMIT AND PR QUALITY — Commit message matches issue Metadata verbatim. Dependencies correctly link PR → blocks → issue. PR body includes
Closes #10438.Verdict
The fix itself is sound and ready for merge once CI passes and the label is applied. Please fix the lint violations and apply the
Type/Buglabel.@ -0,0 +185,4 @@"""Assert that ``discover_tools()`` was called exactly once.With the bug present, multiple threads would call ``discover_tools()``concurrently, so the count would be > 1.Suggestion: Replace the unicode separator comments
# ── Given ──,# ── When ──,# ── Then ──with ASCII equivalents (e.g.,# [Given],# [When],# [Then]). These appear to be the source of the ruff lint failure — the unicode en-dashes in comment lines may trigger line-length or format violations. After fixing, re-runruff check features/steps/tdd_mcp_client_race_condition_start_steps.pyto confirm.Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
Implementation Attempt — Tier 1: kimi — Success
Fixed the CI lint gate failure that was blocking this PR from merging.
Root cause:
ruff formatrequired a multi-line assert expression infeatures/steps/tdd_mcp_client_race_condition_start_steps.py(lines 218-220) to be collapsed into a single line. The CIlintjob runs bothruff checkandruff format --check; the format check was failing with exit code 1.Fix applied (commit
4d5ccf27):Quality gate status:
nox -s lint✓ (ruff check — all checks passed)nox -s format -- --check✓ (ruff format — 1998 files already formatted)typecheck✓ (was passing in CI before this fix)unit_tests✓ (was passing in CI before this fix — 8m5s)integration_tests✓ (was passing in CI before this fix)e2e_tests✓ (was passing in CI before this fix)Scope: The PR branch already contained only the 3 relevant files (
src/cleveragents/mcp/client.py,features/tdd_mcp_client_race_condition_start.feature,features/steps/tdd_mcp_client_race_condition_start_steps.py). The scope violation noted in review 7021 was about a prior state of the branch that has since been cleaned up.Note on REQUEST_CHANGES reviews: Review 7021 (scope violation) is now moot — the branch is already atomic. Review 7051 (lint + label) has been addressed by this fix. The
Type/Buglabel cannot be applied by this bot (label API is restricted), but the PR body already correctly referencesCloses #10438and the dependency direction is correct.Automated by CleverAgents Bot
Supervisor: Implementation | Agent: implementation-worker
Re-Review for PR #10892. This review verifies the fix for race condition in McpClient.start() (issue #10438). Previous blocking feedback from review #7051 has been addressed: CI lint now passes, coverage check is passing. The fix correctly adds _state == McpClientState.STARTING inside the lock guard. TDD regression tests cover concurrent initiation with 5 and 10 threads plus sequential idempotency verification. All 10 review categories pass. COMMENT submitted.
Formal review submitted: COMMENT (ID 7070). Re-review of the McpClient.start() race condition fix. Previous blocking feedback addressed. All checklist categories pass.
Review Summary — PR #10892: Fix race condition in McpClient.start() double initialization
This PR addresses a genuine, well-documented race condition in
McpClient.start()(issue #10438). The core fix is correct and the TDD regression test is well-designed. CI is fully green. However, two blocking merge gate violations must be resolved before approval.What was reviewed
src/cleveragents/mcp/client.py— single-line fix + docstring updatefeatures/tdd_mcp_client_race_condition_start.feature— new TDD regression test (39 lines, 3 scenarios)features/steps/tdd_mcp_client_race_condition_start_steps.py— step definitions with_CountingTransport(218 lines)1. CORRECTNESS — PASS
The fix is correct. Adding
_state == McpClientState.STARTINGto the idempotency guard inside the lock closes the race window precisely. The first thread setsSTARTINGand proceeds; any subsequent concurrent caller acquires the lock, seesSTARTING, and returns immediately. Acceptance criteria from issue #10438 are directly verified by the TDD scenarios.Design note (non-blocking): If
connect()raises an exception, the client entersERRORstate, but any concurrent caller that returned early (seeingSTARTING) silently returned without error. Callers may not realize initialization failed. This is an existing design trade-off, not introduced by this PR, and is acceptable behavior — subsequentcall_tool()calls would surface the error.2. SPECIFICATION ALIGNMENT — PASS
The
McpClient.start()idempotency guarantee is preserved and the docstring is updated to document the thread-safety guarantee. No spec changes needed for a bug fix.3. TEST QUALITY — PASS
Excellent TDD regression test. Tags
@tdd_issue @tdd_issue_10438are present. Three well-named BDD scenarios cover concurrent starts (5 and 10 threads) and sequential idempotency. The_CountingTransportinner class cleanly wrapsMockMCPTransportwithout modifying it.threading.Barriersynchronization maximizes race probability. Thread liveness checks (deadlock detection) and barrier error assertions are both present. All step definitions are type-annotated and well-documented with comprehensive docstrings.4. TYPE SAFETY — PASS
All function signatures, parameters, and return types are annotated.
from __future__ import annotationsis present. No# type: ignoreanywhere.typing.Anyused appropriately for the MCP protocol dict types.5. READABILITY — PASS
Clear, descriptive names throughout. The
_CountingTransportclass is self-contained and well-documented. Gherkin scenarios read as living documentation. Module-level docstring explains the bug, the fix, and the test strategy comprehensively.6. PERFORMANCE — PASS
The fix is O(1) — one additional boolean comparison inside an already-acquired lock. No performance concerns.
7. SECURITY — PASS
No new secrets, injection vectors, or unsafe patterns. Lock-based synchronization is correct.
8. CODE STYLE — PASS
Files are well under 500 lines. SOLID principles followed. Mock placement in
features/steps/(inline_CountingTransport) rather thanfeatures/mocks/is acceptable since it is a test-local helper not reused elsewhere.9. DOCUMENTATION — PASS
Docstring for
start()updated to document the thread-safety guarantee. Module-level docstrings on both new test files comprehensively explain the bug context and test strategy.10. COMMIT AND PR QUALITY — BLOCKING ISSUES FOUND
Two issues must be resolved:
Issue 1 — Missing
Type/Buglabel (blocking merge gate):The PR has zero labels. Per CONTRIBUTING.md, every PR must have exactly one
Type/label before merge. The linked issue #10438 is classified asType/BugwithPriority/Critical. The PR must carry theType/Buglabel. (Note: if the bot cannot apply labels via the API due to access restrictions, a maintainer must apply this manually.)Issue 2 — Commit history is not clean (blocking per contributing rules):
The branch contains two commits:
e9ec670b—Fix race condition in McpClient.start() double initialization4d5ccf27—style(tests): fix ruff format violation in TDD step fileThe second commit is a formatting fixup that should have been squashed into the first before the PR was submitted. Contributing rules require: "clean up history with interactive rebase" and "every commit in the PR is meaningful and clean". A lint fixup commit is not a meaningful standalone commit — it is a WIP artifact that should not appear in merged history.
Additionally, the fixup commit (
4d5ccf27) hasISSUES CLOSED: #10438in its footer. A formatting-only commit should not close the issue — the issue is closed by the feature commit. HavingISSUES CLOSED:on a fixup commit is incorrect and misleading.Required action: Squash
4d5ccf27intoe9ec670bvia interactive rebase to produce one clean, atomic commit. The single squashed commit should retain the original commit message first line (Fix race condition in McpClient.start() double initialization) and theISSUES CLOSED: #10438footer.Non-blocking suggestions
@tdd_issueand@tdd_issue_10438tags on the feature file look correct — verify this is consistent with how other TDD regression tests tag their features in the codebase.Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
@ -0,0 +215,4 @@def step_all_threads_no_error(context: Context) -> None:"""Assert that all concurrent start() threads completed without error."""errors = context.mcp_race_thread_errorsassert not errors, f"Expected no thread errors but got {len(errors)}: {errors}"BLOCKING — Commit hygiene: This file was introduced in the first commit (
e9ec670b) and then modified in the second commit (4d5ccf27 style(tests): fix ruff format violation) to collapse a multi-line assert into a single line. The second commit is a fixup that should have been squashed into the first before PR submission. Per CONTRIBUTING.md, commit history must be clean — interactive rebase and squash4d5ccf27intoe9ec670bto produce one atomic commit. TheISSUES CLOSED: #10438footer on the fixup commit is also incorrect — a formatting-only change should not be closing the issue.Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
Suggestion (non-blocking): The updated docstring correctly documents the thread-safety guarantee. One minor observation: the docstring could also mention what happens if
start()is called when the client is inERRORstate (i.e., it will retry —_startedis stillFalseand_statewould not beSTARTINGat that point, so the call will proceed). This would make the contract fully specified for callers.Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
Formal review submitted: REQUEST_CHANGES (ID 7639). Two blocking issues found: (1) PR is missing required
Type/Buglabel — every PR must have exactly oneType/label before merge; (2) commit history contains an unsquashed formatting fixup commit (4d5ccf27) that should be rebased and squashed into the main commit (e9ec670b). The fixup commit also incorrectly carriesISSUES CLOSED: #10438in its footer. The core fix and TDD tests are correct and CI is fully green — resolve the commit hygiene and label issues to proceed to approval.Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
Review Summary — PR #10892: Fix race condition in McpClient.start() double initialization
This is a first-pass full review of the current state of the branch at
4d5ccf27. The fix itself is technically correct and CI is fully green across all 14 checks. However, four blocking issues prevent this PR from being merged as-is.CI Status
All required gates pass: lint ✓, typecheck ✓, security ✓, unit_tests ✓, integration_tests ✓, e2e_tests ✓, coverage ✓, status-check ✓.
Linked Issue
Issue #10438 — "Race condition in McpClient.start() allows concurrent double initialization"
Type/Bug,Priority/Critical,MoSCoW/Must have,State/VerifiedAcceptance Criteria:
start()result in exactly oneconnect()invocation ✓ (tested)start()result in exactly onediscover_tools()invocation ✓ (tested)McpClientState.RUNNINGstate after concurrent starts ✓ (tested)1. CORRECTNESS — PASS
The fix is correct and minimal. Changing
if self._started:toif self._started or self._state == McpClientState.STARTING:inside thewith self._lock:block closes the race window exactly. The first thread sets_state = STARTINGand proceeds to callconnect()anddiscover_tools()outside the lock. All subsequent concurrent callers acquire the lock, seeSTARTING, and return immediately.All four binary acceptance criteria from issue #10438 are satisfied.
2. SPECIFICATION ALIGNMENT — PASS
McpClient.start()is documented as idempotent. The fix preserves and extends this guarantee to concurrent callers. The updated docstring accurately describes the new thread-safety contract. No spec changes are required for a bug fix.3. TEST QUALITY — PASS (with suggestion)
The TDD regression test is well-crafted:
@tdd_issue @tdd_issue_10438✓_CountingTransportuses athreading.Lockfor thread-safe counter increments ✓threading.Barriermaximizes race probability by synchronising thread entry ✓BrokenBarrierErrorfiltering are both present ✓Suggestion (non-blocking): The test suite has no scenario for the error-recovery path: if
connect()raises, the client correctly entersERRORstate and the concurrent caller that returned early (seeingSTARTING) silently succeeded. A future test could verify that after anERRORstate, a subsequentstart()call correctly retries (because_startedremainsFalseand_stateis no longerSTARTING). This is not required by issue #10438's acceptance criteria, but would improve confidence.4. TYPE SAFETY — PASS
All new code is fully annotated.
from __future__ import annotationsis present.typing.Anyis used appropriately for the MCP protocol'sdict[str, Any]wire format. Zero# type: ignoreanywhere in the diff.5. READABILITY — PASS
Clear, descriptive names throughout. The module-level docstring on the step file explains the bug, the fix, and how race detection works — excellent living documentation. Gherkin scenario names read naturally as specifications.
6. PERFORMANCE — PASS
The fix adds one boolean comparison inside an already-acquired
RLock. O(1), negligible overhead.7. SECURITY — PASS
No secrets, injection vectors, or unsafe patterns introduced.
8. CODE STYLE — BLOCKING ISSUE (mock placement)
See Blocking Issue #2 below.
9. DOCUMENTATION — BLOCKING ISSUE (changelog)
See Blocking Issue #3 below.
10. COMMIT AND PR QUALITY — BLOCKING ISSUES (labels, commit hygiene)
See Blocking Issues #1 and #4 below.
Blocking Issues
BLOCKING ISSUE #1 — Missing
Type/BuglabelThe PR has zero labels. Per CONTRIBUTING.md, every PR must carry exactly one
Type/label before it can be merged:The linked issue #10438 is
Type/BugwithPriority/Critical. The PR must be labelledType/Bug. If the submitting bot lacks label API permissions, a maintainer must apply this label manually before the PR can be approved for merge.How to fix: Apply the
Type/Buglabel to this PR.BLOCKING ISSUE #2 —
_CountingTransportplaced infeatures/steps/instead offeatures/mocks/The
_CountingTransportclass is a test double (a fake/stub transport that records call counts). Per CONTRIBUTING.md:The class is currently defined at the top of
features/steps/tdd_mcp_client_race_condition_start_steps.py. Even though it is only used by this one step file, the project rule is absolute — test doubles must live infeatures/mocks/, not inline in step files.How to fix:
_CountingTransport(the class definition, lines 38–73 of the step file) into a new filefeatures/mocks/counting_mcp_transport.py.CountingMCPTransport(drop the leading underscore, which implies module-private — mocks infeatures/mocks/are shared utilities).from features.mocks.counting_mcp_transport import CountingMCPTransportBLOCKING ISSUE #3 — CHANGELOG not updated
Per CONTRIBUTING.md:
Neither the main fix commit (
e9ec670b) nor the style fixup (4d5ccf27) added an entry toCHANGELOG.md. TheCHANGELOG.mdfile has an## [Unreleased]section with### Fixedsubsection — this bug fix must be documented there.How to fix: Add an entry under
## [Unreleased]→### FixedinCHANGELOG.mddescribing the race condition fix. Example:This entry should be squashed into the main fix commit (see Blocking Issue #4).
BLOCKING ISSUE #4 — Commit history contains an unsquashed fixup commit
The branch contains two commits:
e9ec670b—Fix race condition in McpClient.start() double initialization4d5ccf27—style(tests): fix ruff format violation in TDD step filePer CONTRIBUTING.md:
A formatting fixup is not a meaningful standalone commit in a PR — it is a WIP artifact. It must be squashed into the first commit before this PR can be merged. Additionally, the fixup commit carries
ISSUES CLOSED: #10438in its footer, which is semantically incorrect for a style-only change.Note: the CHANGELOG addition required by Blocking Issue #3 should also be included in the squashed commit.
How to fix:
Fix race condition in McpClient.start() double initialization(matching issue #10438 Metadata verbatim)ISSUES CLOSED: #10438Summary
_CountingTransportin wrong directoryThe core fix is sound. Resolve the four blocking issues and this PR will be ready for approval.
Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
@ -0,0 +34,4 @@from features.mocks.mock_mcp_transport import MockMCPTransportclass _CountingTransport(MCPTransport):BLOCKING — Mock placement violation:
_CountingTransportis a test double (fake transport that records call counts). Per CONTRIBUTING.md, ALL mocks, fakes, stubs, and test doubles must live infeatures/mocks/— this is the only valid location in this project. Defining it inline in a step file is not permitted, even if it is only used by this one file.How to fix: Move this class to
features/mocks/counting_mcp_transport.py, rename itCountingMCPTransport(the leading underscore implies module-private, but mocks infeatures/mocks/are shared utilities), and import it here withfrom features.mocks.counting_mcp_transport import CountingMCPTransport.Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
Formal review submitted: REQUEST_CHANGES (Review ID 7651).
Four blocking issues identified on the current branch (
4d5ccf27):Type/Buglabel — PR must carry exactly oneType/label per CONTRIBUTING.md; a maintainer must applyType/Bugmanually if the bot cannot._CountingTransportin wrong directory — Test doubles must live exclusively infeatures/mocks/, not inline infeatures/steps/files. Move tofeatures/mocks/counting_mcp_transport.py.CHANGELOG.md. A### Fixedentry describing the race condition fix must be added.style(tests)fixup must be squashed into the main fix commit before merge. The squashed result must also include the CHANGELOG update and mock-file move.The core fix is correct and CI is fully green. Address the four blocking issues and request a re-review.
Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
4d5ccf275b19e96ff7bbReview Summary — PR #10892: Fix race condition in McpClient.start() double initialization
This is a re-review at head commit
19e96ff7. The author has addressed all four blocking issues from the previous review (#7651) — theType/Buglabel is now applied,_CountingTransporthas been correctly moved tofeatures/mocks/counting_mcp_transport.pyasCountingMCPTransport,CHANGELOG.mdhas been updated with a well-written### Fixedentry, and the two-commit history has been squashed into one clean atomic commit. The core fix and test design remain sound.However, the new commit (
19e96ff7) has introduced five blocking issues that must be resolved before approval.Prior Feedback Resolution (vs. review #7651)
Type/Buglabel_CountingTransportinfeatures/steps/instead offeatures/mocks/features/mocks/counting_mcp_transport.pyasCountingMCPTransport### Fixedentry added correctly19e96ff7CI Status at
19e96ff7Four required CI gates are failing and the coverage gate is skipped. Per company policy, all CI gates (lint, typecheck, security, unit_tests, coverage) must pass before a PR can be merged.
Category Assessment
1. CORRECTNESS — PASS
The fix is correct. Both
start()and_ensure_started()now guard withif self._started or self._state == McpClientState.STARTING:inside the lock. All acceptance criteria from issue #10438 are satisfied by the TDD tests.2. SPECIFICATION ALIGNMENT — PASS
Docstring updated to reflect the thread-safety guarantee. No spec changes needed for a bug fix.
3. TEST QUALITY — PASS
TDD regression test tagged
@tdd_issue @tdd_issue_10438. Three well-named BDD scenarios.CountingMCPTransportcorrectly placed infeatures/mocks/and uses thread-safe counters withthreading.Lock. Barrier-based synchronisation maximises race probability.4. TYPE SAFETY — PASS (with concern)
All new code has correct type annotations. No
# type: ignorepresent. However, theif TYPE_CHECKING: passblock infeatures/mocks/counting_mcp_transport.pyis a dead empty block — it imports nothing and does nothing. This should be removed entirely. Also note the# noqa: PLC0415suppression — see Blocking Issue #1.5. READABILITY — PASS
Clear names. Good docstrings. Gherkin scenarios read naturally as specifications.
6. PERFORMANCE — PASS
O(1) change inside an already-acquired lock.
7. SECURITY — PASS
No concerns.
8. CODE STYLE — FAIL (lint gate failing)
See Blocking Issue #1.
9. DOCUMENTATION — FAIL (wrong CONTRIBUTORS.md entry)
See Blocking Issue #4.
10. COMMIT AND PR QUALITY — FAIL
See Blocking Issues #4 and #5.
Blocking Issues
BLOCKING ISSUE #1 — CI lint gate is failing
CI / lint (pull_request)is failing at19e96ff7. The most likely causes based on the diff are:features/mocks/counting_mcp_transport.pyline 34 — The# noqa: PLC0415suppression comment silences a rule about non-top-level imports. Per CONTRIBUTING.md, noqa suppressions are not acceptable — they mask rather than fix the underlying issue. The import ofMockMCPTransportinside__init__must be moved to the top of the file. If a circular import exists, use dependency injection: accept the inner transport as a constructor parameter typed toMCPTransport(the abstract base), notMockMCPTransportspecifically.features/steps/tdd_mcp_client_race_condition_start_steps.py— There are 3 consecutive blank lines between the import block and the# Givensection separator (lines 34-38 in the diff).ruffenforces a maximum of 2 blank lines (E303). Reduce to 2 blank lines.features/mocks/counting_mcp_transport.py— Theif TYPE_CHECKING: passblock (lines 19-20) is an empty dead block. Remove it entirely.How to fix: Run
nox -s lintandnox -s format -- --checklocally, fix all reported violations, and push a corrected commit.BLOCKING ISSUE #2 — CI unit_tests and integration_tests gates are failing
CI / unit_tests (pull_request)andCI / integration_tests (pull_request)are both failing at19e96ff7. This indicates one or more Behave or Robot Framework tests are failing. This must be investigated and fixed before approval.How to fix: Run
nox -s unit_testsandnox -s integration_testslocally. Identify which tests are failing and fix them. Do not suppress failures — fix root causes.BLOCKING ISSUE #3 — CI coverage gate is skipped
CI / coverage (pull_request)shows as skipped rather than passing. Coverage must report >= 97% as a hard merge gate. A skipped result does not satisfy this requirement — likely becauseunit_testsis failing and coverage depends on it passing first.How to fix: Fix unit_tests (Blocking Issue #2) first, then run
nox -s coverage_reportlocally to confirm coverage is >= 97%.BLOCKING ISSUE #4 — CONTRIBUTORS.md entry describes the wrong contribution
The new CONTRIBUTORS.md entry added in this commit reads:
This describes issue #10496 (AutoDebug fix) which has nothing to do with this PR. This PR fixes issue #10438 (McpClient.start() race condition). The wrong contributor credit has been added.
How to fix: Replace the CONTRIBUTORS.md entry with one accurately describing the McpClient race condition fix. Example:
HAL 9000 has contributed the McpClient.start() race condition fix (PR #10892 / issue #10438): fixed a concurrent double-initialisation race in McpClient.start() by adding an _state == McpClientState.STARTING guard inside the threading.RLock, preventing concurrent callers from calling connect() and discover_tools() multiple times. Includes TDD regression test with BDD scenarios covering concurrent (5 and 10 threads) and sequential start paths.BLOCKING ISSUE #5 — Commit first line does not follow Conventional Changelog format
The commit message first line is:
Fix race condition in McpClient.start() double initializationPer CONTRIBUTING.md, every commit must follow Conventional Changelog format:
<type>(<scope>): <description in imperative mood>. This commit is missing thetype(scope):prefix. If issue #10438 has a Metadata section prescribing the exact first line, that must be used verbatim. Otherwise an acceptable corrected first line would be:fix(mcp): fix race condition in McpClient.start() double initializationHow to fix: After resolving issues #1-#4 above, amend/rebase the commit to correct the first line.
Summary
The core fix is correct and the structural changes from the previous review have been correctly applied. Fix the five blocking issues listed above and request a re-review.
Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
@ -40,3 +40,4 @@ Below are some of the specific details of various contributions.* HAL 9000 has contributed database resource types (PostgreSQL, SQLite) with transaction-based sandbox strategy: implemented ``DatabaseResourceHandler`` providing full CRUD operations (`read`, `write`, `delete`, `list_children`) and connection validation with automatic credential masking for PostgreSQL and SQLite backends. Includes ``TransactionSandbox`` infrastructure wired into ``SandboxFactory``, BDD test coverage in ``features/database_resources.feature``, and Robot Framework integration tests in ``robot/database_resources.robot`` (PR #10591 / issue #8608, Epic #8568).* HAL 9000 has contributed the agents plan rollback command (PR #8674 / issue #8557): implemented checkpoint-based plan state restoration with the `agents plan rollback <plan-id> [<checkpoint-id>]` CLI command as part of Epic #8493, enabling plans to be restored to previous checkpoints, discarding post-checkpoint decisions, and resuming execution from the rolled-back state. Supported by `--yes/-y`, `--to-checkpoint`, and `--format/-f` flags. Includes comprehensive BDD test coverage (>= 97%) for rollback, decision discarding, and plan resume functionality.* HAL 9000 has contributed the PyYAML security upgrade (PR #11012 / issue #9055): added `pyyaml>=6.0.3` dependency constraint to address known YAML parsing vulnerabilities.* HAL 9000 has contributed the AutoDebug node state mutation fix (#10496): fixed _analyze_error, _generate_fix, and _validate_fix in src/cleveragents/agents/graphs/auto_debug.py to return partial update dicts per LangGraph s node contract, preventing duplicate state entries and checkpoint inconsistencies.BLOCKING — Wrong contribution described: This entry describes issue #10496 (AutoDebug node state mutation fix), which has nothing to do with this PR. This PR fixes issue #10438 (McpClient.start() race condition). The wrong contributor credit has been added to this commit.
How to fix: Replace this line with an entry accurately describing the McpClient race condition fix:
* HAL 9000 has contributed the McpClient.start() race condition fix (PR #10892 / issue #10438): fixed a concurrent double-initialisation race in McpClient.start() by adding an _state == McpClientState.STARTING guard inside the threading.RLock, preventing concurrent callers from calling connect() and discover_tools() multiple times. Includes TDD regression test with BDD scenarios covering concurrent (5 and 10 threads) and sequential start paths.Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
@ -0,0 +31,4 @@"""def __init__(self, tools: list[dict[str, Any]]) -> None:from features.mocks.mock_mcp_transport import MockMCPTransport # noqa: PLC0415BLOCKING —
# noqa: PLC0415suppression not permitted: TheMockMCPTransportimport inside__init__uses a noqa suppression to silence the linter. Per CONTRIBUTING.md, noqa suppressions are not acceptable — they mask rather than fix the underlying issue.How to fix: Move the import to the top of the file. If a circular import exists between the two mock files, use dependency injection: accept the inner transport as a constructor parameter typed to
MCPTransport(the abstract base class), notMockMCPTransportspecifically. This eliminates the circular dependency and removes the need for the noqa comment.Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
@ -0,0 +34,4 @@from features.mocks.counting_mcp_transport import CountingMCPTransportBLOCKING — Excess blank lines (E303 lint violation): There are 3 consecutive blank lines here between the import block and the
# Givensection comment.ruffenforces a maximum of 2 blank lines between top-level statements (E303). Reduce to exactly 2 blank lines.Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
Formal review submitted: REQUEST_CHANGES (Review ID 8646).
All four blocking issues from the previous review (#7651) have been resolved by the author. However, the new commit
19e96ff7has introduced five new blocking issues:The core fix is correct and all prior structural issues have been addressed. Fix these five blocking issues and request a re-review.
Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
19e96ff7bb62b0b715feRe-Review Summary — PR #10892: Fix race condition in McpClient.start() double initialization
This re-review is anchored to the current head
62b0b715. The previous review (#8646, at19e96ff7) identified five blocking issues. This review assesses how many have been resolved and whether new issues have been introduced.Prior Blocking Issues Status (vs. review #8646)
# noqa: PLC0415suppression, 3 consecutive blank lines (E303), emptyif TYPE_CHECKING: passblockfix(scope):)Fix race condition in McpClient.start() double initializationwith no type prefixAll five blocking issues from review #8646 remain unresolved.
CI Status at
62b0b715Four required CI gates are still failing and coverage is still skipped. Additionally,
tdd_quality_gateandintegration_testsare now also failing — these are new regressions compared to the prior review at19e96ff7(where integration_tests passed). This is a regression introduced by the current commit.Diff Analysis at
62b0b715The diff shows the following files changed relative to master:
CHANGELOG.md— ✅ Fixed entry for #10438 is present and well-writtenCONTRIBUTORS.md— ❌ Still contains the wrong AutoDebug #10496 entry; a new malformed entry for "Jeffrey Phillips Freeman" has been added above itfeatures/mocks/counting_mcp_transport.py— ❌ Still contains# noqa: PLC0415on line 34, still has emptyif TYPE_CHECKING: passblockfeatures/steps/tdd_mcp_client_race_condition_start_steps.py— ❌ Still has 2 extra blank lines (3 total consecutive) after the import blockfeatures/tdd_mcp_client_race_condition_start.feature— ✅ Looks correctsrc/cleveragents/mcp/client.py— ✅ The fix is correct (same as before)Blocking Issues (Consolidated)
BLOCKING ISSUE #1 — CI lint gate is still failing
The three lint violations identified in review #8646 are all still present in the diff at
62b0b715:features/mocks/counting_mcp_transport.pyline 34:# noqa: PLC0415suppression is still present. noqa suppressions are prohibited by CONTRIBUTING.md. The import must be moved to the top of the file. Use dependency injection: acceptinner: MCPTransportas a constructor parameter (typed to the abstractMCPTransportbase class, not the concreteMockMCPTransport), eliminating the need for the circular import entirely.features/steps/tdd_mcp_client_race_condition_start_steps.py: The step file still has 3 consecutive blank lines between the import block and the# ── Given ──section comment. ruff enforces a maximum of 2 blank lines (E303). Remove one blank line.features/mocks/counting_mcp_transport.pylines 18-20: Theif TYPE_CHECKING: passblock is still present. It is an empty dead block with no imports — remove it entirely.How to fix: Run
nox -s lintandnox -s format -- --checklocally, fix all reported violations, push a corrected commit.BLOCKING ISSUE #2 — CI unit_tests and tdd_quality_gate gates are still failing
Both
CI / unit_testsandCI / tdd_quality_gateare failing. Thetdd_quality_gatefailure is new compared to the prior review — it was not failing at19e96ff7. This means the current commit has introduced a regression that causes the TDD quality gate to fail in addition to the existing unit_tests failure.How to fix: Run
nox -s unit_testslocally. Identify which Behave scenarios are failing and fix them. Pay particular attention to the new TDD feature filefeatures/tdd_mcp_client_race_condition_start.feature— if the TDD quality gate is now failing, there may be an issue with the@tdd_issuetag or@tdd_issue_10438scenario tagging that has been broken in this commit. Do not suppress failures — fix root causes.BLOCKING ISSUE #3 — CI integration_tests gate is now also failing (new regression)
CI / integration_testsis failing at62b0b715. This gate was passing at19e96ff7(per review #8646: "integration_tests: FAILING" — wait, let me re-read). Checking the CI table from review #8646:integration_tests: FAILINGwas listed as failing there too. So this is a pre-existing failure, not a new regression introduced at62b0b715. It remains unresolved.How to fix: Run
nox -s integration_testslocally. Identify which Robot Framework tests are failing and fix them. Do not suppress failures — fix root causes.BLOCKING ISSUE #4 — CI coverage gate is still skipped
CI / coverageis skipped becauseunit_testsis failing. Coverage must report >= 97% as a hard merge gate. Fix unit_tests first (Blocking Issue #2), then runnox -s coverage_reportlocally to confirm >= 97%.BLOCKING ISSUE #5 — CONTRIBUTORS.md still incorrect and worsened
The CONTRIBUTORS.md changes in the current diff show two problems:
McpClient.start()race condition fix, but it is formatted inconsistently with the rest of the file (5-space indent instead of the* Name has contributed...format that all other entries use in the# Detailssection).How to fix:
* Name <email>format in the contributors list section (before# Details), not as a detail paragraph. The detail paragraph for HAL 9000 (the bot that actually authored this fix) should be added in the# Detailssection using the standard format:BLOCKING ISSUE #6 — Commit first line still missing Conventional Changelog prefix
The commit message first line is still:
Per CONTRIBUTING.md, every commit must follow Conventional Changelog format:
<type>(<scope>): <description in imperative mood>. The issue #10438 Metadata section specifies the exact commit message asFix race condition in McpClient.start() double initialization— if this is verbatim from the issue Metadata, then it must be used exactly as-is per CONTRIBUTING.md ("verbatim from issue Metadata when prescribed"). However, examining issue #10438's Metadata section: it listsCommit Message: Fix race condition in McpClient.start() double initialization. Since this is the prescribed verbatim commit message from the issue Metadata section, this IS acceptable per CONTRIBUTING.md rule: "Use that text EXACTLY as the first line — verbatim, copy-paste". This blocking issue from review #8646 is therefore RESOLVED — the commit message matches the Metadata section exactly.Category Assessment
What Was Fixed Since Review #8646 (Progress)
Type/Buglabel is already applied (resolved in a prior iteration)Summary
Five of the six blocking issues from review #8646 remain open. The commit message format issue has been re-evaluated and found to be compliant with the Metadata verbatim rule — so that blocker is now resolved. The remaining five blocking issues (lint violations, unit_tests failure, integration_tests failure, coverage skipped, CONTRIBUTORS.md errors) must all be resolved before this PR can be approved.
The core fix in
src/cleveragents/mcp/client.pycontinues to be correct and sound. The path to approval is clear:# noqa: PLC0415infeatures/mocks/counting_mcp_transport.pyby using dependency injectionif TYPE_CHECKING: passblock fromfeatures/mocks/counting_mcp_transport.pyfeatures/steps/tdd_mcp_client_race_condition_start_steps.py(reduce 3 to 2)unit_testsandtdd_quality_gateBehave scenariosintegration_testsRobot Framework testsCONTRIBUTORS.mdto describe the correct contribution (#10438, not #10496)Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
@ -9,2 +9,4 @@* Rui Hu <rui.hu@cleverthis.com>* Jeffrey Phillips Freeman has contributed the McpClient.start() race condition fix (#10438): added _state == STARTING guard inside threading.RLock in start() and _ensure_started(), ensuring concurrent callers return immediately when initialisation is already in progress.BLOCKING — Wrong CONTRIBUTORS.md entry (from review #8646, unresolved) AND new malformed entry: Two issues on this file:
The AutoDebug #10496 entry (last line of file in the diff) is still present and is wrong — this PR fixes issue #10438, not #10496. Remove it.
The new "Jeffrey Phillips Freeman" entry added above it is malformed — it is indented with 5 spaces inconsistent with the file format. The short-form contributor list before
# Detailsshould use* Name <email>format only. The detail paragraph should be in the# Detailssection by HAL 9000 (the PR author), in the standard format:* HAL 9000 has contributed the McpClient.start() race condition fix (PR #10892 / issue #10438): ...How to fix: Remove both the AutoDebug entry and the malformed Jeffrey Phillips Freeman entry. Add a correctly-formatted detail entry for HAL 9000 describing the McpClient race condition fix.
Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
@ -0,0 +16,4 @@from cleveragents.mcp.adapter import MCPServerConfig, MCPTransportif TYPE_CHECKING:BLOCKING — Empty
if TYPE_CHECKING: passblock (from review #8646, unresolved): This block imports nothing and does nothing — it is dead code. Remove it entirely. If type-checking imports are needed in future, add them then.Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
@ -0,0 +31,4 @@"""def __init__(self, tools: list[dict[str, Any]]) -> None:from features.mocks.mock_mcp_transport import MockMCPTransport # noqa: PLC0415BLOCKING —
# noqa: PLC0415suppression still present (from review #8646, unresolved): This suppression comment is prohibited by CONTRIBUTING.md — it masks rather than fixes the underlying issue. The import ofMockMCPTransportinside__init__must be moved to the top of the file. If circular imports prevent a top-level import, use dependency injection: accept aninner: MCPTransportparameter (typed to the abstract base class) in the constructor, and pass the concreteMockMCPTransportfrom the step file. This eliminates the circular dependency entirely and removes the need for the noqa comment.Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
@ -0,0 +34,4 @@from features.mocks.counting_mcp_transport import CountingMCPTransportBLOCKING — 3 consecutive blank lines (E303 lint violation, from review #8646, unresolved): There are still 3 consecutive blank lines between the import block and the
# ── Given ──section comment. ruff enforces a maximum of 2 blank lines between top-level statements (E303). Remove one blank line to reduce to exactly 2.Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
Formal review submitted: REQUEST_CHANGES (Review ID 8661).
All five blocking issues from review #8646 remain unresolved at head
62b0b715. CI has four required gates failing (lint, unit_tests, integration_tests, tdd_quality_gate) and coverage is skipped. CONTRIBUTORS.md still contains the wrong AutoDebug #10496 entry plus a new malformed contributor entry. The# noqa: PLC0415suppression, emptyif TYPE_CHECKING: passblock, and 3-blank-line E303 violation are all still present in the mock file and step file. The core fix inclient.pyremains correct. Fix the five remaining blocking issues and request a re-review.Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
View command line instructions
Manual merge helper
Use this merge commit message when completing the merge manually.
Checkout
From your project repository, check out a new branch and test the changes.