chore: sync staging from main (v3 — merge 609 main commits) #872
Closed
release-manager
wants to merge 610 commits from
staging-sync-v3 into staging
pull from: staging-sync-v3
merge into: molecule-ai:staging
molecule-ai:main
molecule-ai:fix/chat-e2e-scope-node-click
molecule-ai:chore/core-self-merge-guard-reserved-paths
molecule-ai:fix/activity-logs-13arg-test-expectations
molecule-ai:fix/core-2508-install-platform-agent-hardening
molecule-ai:fix/KI-013-migrate-legacy-names
molecule-ai:fix/chat-ux-persist-and-autoscroll
molecule-ai:fix/core-2517-memory-write-fk-integration-test
molecule-ai:fix/sev-2499-shared-volume-name-helper
molecule-ai:chore/remove-dead-arm64-darwin-lanes
molecule-ai:fix/ecr-disable-buildx-attestations
molecule-ai:fix/core-2509-org-switcher-audit
molecule-ai:perf/e2e-api-minimax-wait-budget
molecule-ai:test/2505-backward-compat-full
molecule-ai:fix/provision-timeout-720s
molecule-ai:fix/2500-register-boot-logging
molecule-ai:fix/heartbeat-promote-provisioning-to-online
molecule-ai:fix/gate-check-v3-timeout
molecule-ai:fix/2490-add-volumeRemove-assertion
molecule-ai:fix/lint-setup-go-cache-flip-hard-gate
molecule-ai:fix/platform-agent-install-runtime-on-conflict
molecule-ai:fix/2490-rebased
molecule-ai:ci/guard-setup-go-cache
molecule-ai:fix/core-2525-self-approval-authz-gap
molecule-ai:fix/sev-2500-status-transition
molecule-ai:test/2490-migrate-failed-copy-regression
molecule-ai:fix/core-2490-bootstrapfailed-rescue-race
molecule-ai:fix/core-2528-compile
molecule-ai:fix/merge-queue-silent-base-skip
molecule-ai:fix/sev-2499-status-transition-followup
molecule-ai:fix/ops-scripts-snapshot-frozen-ts-2550
molecule-ai:feat/canvas-chat-queue-and-child-lock
molecule-ai:feat/2489-ssot-compute-metadata
molecule-ai:fix/setup-go-cache-vs-bind-mount
molecule-ai:fix/sev-2499-ssot-volume-names
molecule-ai:fix/review-check-tests-jq-fail-closed
molecule-ai:feat/2507-kind-wire-contract-truth-up
molecule-ai:fix/sev-2499-enhanced-drift-guard
molecule-ai:harden/e2e-ki013-drift-guard
molecule-ai:ci/guard-no-coe-on-required
molecule-ai:feat/agent-liveness-a2-stall-watchdog
molecule-ai:fix/agent-stale-window-and-heartbeat
molecule-ai:test/backward-compat-migrate-unit-tests
molecule-ai:fix/core-2509-org-switcher
molecule-ai:fix/add-missing-provisioner-unit-tests
molecule-ai:docs/rfc-agent-liveness
molecule-ai:feat/unified-requests-inbox-p3-canvas
molecule-ai:feat/unified-requests-inbox-p4-nudge
molecule-ai:fix/concierge-mcp-declaration
molecule-ai:feat/unified-requests-inbox-p1
molecule-ai:feat/envelope-bounce-animation
molecule-ai:feat/support-claude-fable-5
molecule-ai:fix/memories-http-upsert-namespace
molecule-ai:fix/chat-timeout-not-unreachable
molecule-ai:feat/2502-consume-conductor-snapshot
molecule-ai:ci/publish-image-registry-layer-cache
molecule-ai:test/backward-compat-migrate-unit-tests-v2
molecule-ai:fix/concierge-home-chat-follows-selection
molecule-ai:fix/sev-2499-e2e-ki013-full-id-names
molecule-ai:feat/cp-provision-forward-kind
molecule-ai:feat/canvas-org-switcher
molecule-ai:fix/ssot-consolidate-compute-options
molecule-ai:fix/KI-013-provisioner-uuid-truncation
molecule-ai:fix/add-missing-scheduler-unit-tests
molecule-ai:pr2485-merge-test
molecule-ai:fix/add-missing-middleware-unit-tests
molecule-ai:fix/deploy-straggler-tolerance
molecule-ai:fix/e2e-chat-testcontainer-leak
molecule-ai:fix/audit-force-merge-stale-contexts
molecule-ai:fix/sop-checklist-author-self-ack
molecule-ai:fix/remove-dead-code-QueueDepth
molecule-ai:fix/1093-adapter-py-test-margin
molecule-ai:fix/local-provision-e2e-ipv4-hardcode
molecule-ai:fix/main-red-e2e-act-runner-docker-detect
molecule-ai:staging
molecule-ai:test/2148-registry-auth-real-postgres-v2
molecule-ai:fix/all-required-aggregate-fail-closed
molecule-ai:fix/envelope-anchor-dot-and-scale
molecule-ai:test/2148-registry-auth-real-postgres
molecule-ai:fix/main-red-e2e-ssrf-publish-retry
molecule-ai:fix/status-reader-paginate-to-exhaustion
molecule-ai:feat/in-place-provider-switch
molecule-ai:test/2391-hydrate-inflight-turn-status
molecule-ai:fix/2450-local-provision-dynamic-port
molecule-ai:refile/2155-migration-replay-from-scratch
molecule-ai:fix/2448-ops-scripts-fail-closed-zero-tests
molecule-ai:fix/handlers-pg-required-tables-widen
molecule-ai:fix/ci-fail-on-zero-tests-collected
molecule-ai:fix/2421-heartbeat-backfill-agent-card
molecule-ai:fix/scheduler-enqueue-cron-on-busy
molecule-ai:fix/sev1-812-approval-validator
molecule-ai:fix/2442-chat-desktop-enter-map-view
molecule-ai:feat/a2a-message-flight-envelope
molecule-ai:fix/e2e-chat-desktop-concierge-reskin-selector
molecule-ai:fix/concierge-role-truncate
molecule-ai:fix/2429-case-fold-trailing-dot-tunnel-hostname
molecule-ai:fix/provider-on-isrunning-status
molecule-ai:feat/canvas-concierge-ui
molecule-ai:feat/ws-switch-provider-endpoint
molecule-ai:fix/platform-tunnel-hostname-normalize
molecule-ai:fix/validate-agent-url-pending-tunnel
molecule-ai:fix/2248-canvas-platform-managed-credential-gating
molecule-ai:fix/memories-commit-error-server-log
molecule-ai:fix/gate-context-target-suffix
molecule-ai:feat/ws-compute-provider-validation
molecule-ai:fix/2396-sop-auto-tier-and-trigger
molecule-ai:fix/1306-gitea-label-singular
molecule-ai:remove/data-residency-banner
molecule-ai:fix/2392-stop-by-instance-id-on-persist-fail
molecule-ai:harden/merge-control-required-checks-json
molecule-ai:fix/2396-sop-auto-tier-qa-security-auto-trigger
molecule-ai:fix/2398-enrich-commit-memory-log
molecule-ai:fix/ec2-orphan-instance-id-persist-failure
molecule-ai:fix/merge-control-script-hardening
molecule-ai:fix/provider-derivation-fail-closed
molecule-ai:fix/restart-sync-update-status-guard
molecule-ai:fix/restart-guard-removed-workspace
molecule-ai:fix/fail-open-status-persist-trio
molecule-ai:fix/2248-suppress-platform-managed-credentials
molecule-ai:fix/2386-send-provider-on-deprovision
molecule-ai:fix/delegate-task-async-sender-pushback-2244
molecule-ai:fix/2331-sop-ceremony-required-checks
molecule-ai:feat/platform-agent-gate-wiring
molecule-ai:fix/umbrella-reaper-1780
molecule-ai:fix/block-internal-paths-hard-gate
molecule-ai:fix/backends-md-drift-risk-6-stale
molecule-ai:cp455-minimal-cell-boot-e2e-stage1
molecule-ai:fix/chat-seed-admin-auth
molecule-ai:fix/goroutine-panic-recovery
molecule-ai:fix/1080-org-helpers-typo-main
molecule-ai:fix/canvas-e2e-transient-failed-2632
molecule-ai:fix/admin-images-codex-and-std-encoding
molecule-ai:fix/render-status-body-state
molecule-ai:fix/memory-section-marker
molecule-ai:test-1675-canvas-user-activity-log-regression
molecule-ai:design/secrets-accessibility-fix
molecule-ai:test/canvas/Toolbar-a11y
molecule-ai:fix/channels-matchesChatID-tests
molecule-ai:fix/workspace-server-healthcheck
molecule-ai:fix/ci-org-helpers-demorgan
molecule-ai:test/delegate-record-db-errors
molecule-ai:infra-sre/fix-platform-go-test
molecule-ai:fix/ci-drift-pagination
molecule-ai:fix/merge-queue-direct-merge-no-update-churn
molecule-ai:fix/stdio-clean
molecule-ai:feat/platform-agent-install
molecule-ai:fix/audit-force-merge-curl-fail-closed
molecule-ai:fix/fail-closed-hardening-trio
molecule-ai:feat/platform-agent-kind
molecule-ai:docs/mark-drift-risk-6-resolved
molecule-ai:feat/byok-create-gate-and-liveness
molecule-ai:feat/workspace-provider-field
molecule-ai:fix/main-red-2308-lint-trackers-fast
molecule-ai:fix/status-reaper-observability
molecule-ai:fix/internal-805-sweep-cf-cloudflare-fallback-clean
molecule-ai:feat/platform-agent-approval-gate
molecule-ai:fix/lint-pre-flip-fail-closed-clean
molecule-ai:fix/main-red-2305-lint-and-e2e-platform-managed
molecule-ai:fix/sop-checklist-hold
molecule-ai:fix/main-red-e2e-chat-auth-token
molecule-ai:fix/internal-802-bp-directive-comments
molecule-ai:fix/reconciler-debounce-coupling-2284
molecule-ai:fix/main-red-canvas-e2e-tablist-strict-mode
molecule-ai:fix/canvas-pause-resume-cascade-param-2122-followup
molecule-ai:fix/2251-delegate-task-message-role-contract-test
molecule-ai:fix/internal-797-postgres-integration-runner-label
molecule-ai:fix/817-canvas-deploy-reminder-per-step-gate
molecule-ai:fix/2139-sop-tier-check-real-qa-security-teams
molecule-ai:fix/sop-checklist-hold-volume-skip
molecule-ai:fix/lint-pre-flip-fail-closed
molecule-ai:feat/2185-manifest-entry-existence-check
molecule-ai:feat/2151-chunk2-integration-tests
molecule-ai:cr2/sec-c-2130-transcript-ssrf
molecule-ai:fix/status-reaper-pagination-observability
molecule-ai:fix/http-client-timeout-panic-recovery-main
molecule-ai:fix/pause-resume-cascade-opt-in-1991
molecule-ai:fix/plugin-uninstall-exec-errors
molecule-ai:fix/gitea-merge-queue-pagination
molecule-ai:fix/review-check-remove-generic-comment-bypass
molecule-ai:fix/sop-tier-remove-fail-open-dead-code
molecule-ai:fix/sop-tier-check-remove-fail-open-core
molecule-ai:feat/merge-queue-auto-discovery
molecule-ai:rfc/platform-agent
molecule-ai:test/flip-probe-governance-gates-2331
molecule-ai:fix/block-internal-paths-fail-open
molecule-ai:test/governance-gate-flip-probe-2331
molecule-ai:fix/merge-queue-hold-on-409-conflict-update
molecule-ai:fix/e2e-smoke-diagnose-detail-767
molecule-ai:fix/sop-checklist-emdash-slug-parse
molecule-ai:fix/2352-merge-queue-409-hold
molecule-ai:fix/merge-queue-autonomous-genuine-approvals
molecule-ai:researcher-gate-probe-1780730963
molecule-ai:fix/578-google-adk-image-refresh-allowlist
molecule-ai:e2e/data-persistence-recreate-2332
molecule-ai:fix/channels-unmarshal-fallback-invalid-json
molecule-ai:feat/workspace-provider-routing
molecule-ai:fix/google-adk-model-registration-coremirror
molecule-ai:fix/renew-lint-coe-tracker-837-clean
molecule-ai:fix/renew-lint-coe-tracker-837
molecule-ai:test/channels-dataprune-e2e-p110
molecule-ai:core2332-p110-workspace-lifecycle-staginge2e
molecule-ai:chore/providers-gen-docker-target
molecule-ai:feat/core-2332-display-reconnect-renewal-e2e
molecule-ai:cr2/google-adk-e2e-coverage
molecule-ai:fix/vertex-ssot-registry-drift
molecule-ai:fix/port-cp544-fail-closed
molecule-ai:fix/sop-tier-authz-no-org-fallback
molecule-ai:fix/core-ci-fail-closed
molecule-ai:docs/sop-fail-closed-ci
molecule-ai:fix/restore-seo-adk-templates-manifest-auth
molecule-ai:rfc/byok-fail-closed-billing
molecule-ai:fix/forensic145-preserve-workspace-scm-token
molecule-ai:fix/ci-coe-trackers-e2e-chat-staging-external
molecule-ai:fix/e2e-reconciler-platform-model-and-boot-error
molecule-ai:fix/e2e-saas-step9-hma-surface
molecule-ai:fix/e2e-staging-byok-opt-in-before-vendor-key
molecule-ai:fix/e2e-saas-model-slug-bare
molecule-ai:fix/e2e-claude-code-minimax-bare-slug
molecule-ai:fix/e2e-tenant-call-surface-body
molecule-ai:fix/main-red-peer-visibility-platform-managed-secrets
molecule-ai:fix/main-red-minimax-model-slug
molecule-ai:fix/sop-tier-check-and-token-parse
molecule-ai:harden/staging-saas-all-runtimes
molecule-ai:harden/no-fail-open-auth
molecule-ai:fix/main-red-lint-continue-on-error-2294
molecule-ai:harden/keyless-feature-e2e-coverage
molecule-ai:harden/derive-provider-matrix-e2e
molecule-ai:harden/enforce-ci-gates-core-v2
molecule-ai:fix/cascade-true-callers-ahead-of-2122
molecule-ai:fix/2151-chunk1-activity-delegation-a2a-integration-tests
molecule-ai:harden/sop-tier-check-remove-expired-coe
molecule-ai:fix/2255-e2e-smoke-poll-parser-kind-discriminator
molecule-ai:fix/a2a-2251-go-role-default
molecule-ai:fix/2140-sop-tier-refire-real-exit-code
molecule-ai:harden/regression-coverage-v2
molecule-ai:fix/521-claude-code-colon-form-overclaim
molecule-ai:fix/core2261-reconciler-toctou-degraded-hardening
molecule-ai:fix/core2261-providers-byte-sync-cp521
molecule-ai:fix/core2261-e2e-instanceid-tag-fallback
molecule-ai:fix/core2261-reconciler-e2e-create
molecule-ai:fix/cascade-canvas-callers
molecule-ai:harden/e2e-staging-saas-failclosed
molecule-ai:harden/e2e-staging-external-chat-failclosed
molecule-ai:harden/e2e-staging-canvas-deflake
molecule-ai:feat/umbrella-reaper
molecule-ai:feat/2261-gap1-takecontrol-e2e
molecule-ai:fix/1997-canary-minimax-m2.7
molecule-ai:fix/2263-staging-canary-namespaced-model
molecule-ai:fix/security-review-owners-na-eligibility
molecule-ai:feat/core2261-reconciler-live-e2e
molecule-ai:feat/core2261-takecontrol-wsproxy-test
molecule-ai:feat/security-review-owners-na-eligibility
molecule-ai:feat/core2261-instance-state-reconciler
molecule-ai:fix/cp529-enforcer-test-unbreak-main
molecule-ai:feat/cp529-byok-vendor-providers
molecule-ai:fix/activity-feed-stable-ordering
molecule-ai:fix/2245-platform-managed-provider-credential-gate
molecule-ai:fix/2245-platform-managed-no-cred
molecule-ai:harden/contract-tests-core
molecule-ai:feat/cp529-byok-routability-enforcer
molecule-ai:feat/core2235-canvas-buildinfo
molecule-ai:fix/2235-canvas-buildinfo-docker-sha
molecule-ai:review/pr3029-pr3033-local
molecule-ai:feat/traces-v1-workspace-secrets-2976
molecule-ai:fix/816-sop-tier-check-stale-reviews
molecule-ai:fix/818-sop-checklist-na-declarations-terminal-success
molecule-ai:fix/core2226-canvas-ordered-deploy
molecule-ai:fix/2222-a2a-delegate-task-attachments
molecule-ai:chore/cp514-byte-sync-drop-vertex-arm
molecule-ai:fix/2205-e2e-api-health-wait-migration-gate
molecule-ai:fix/core2225-staging-canvas-e2e-fixture
molecule-ai:fix/2225-e2e-canvas-stale-hermes-model
molecule-ai:fix/2185-bp-directive-window
molecule-ai:fix/2192-manifest-repo-existence-check-v2
molecule-ai:fix/desktop-takecontrol-reconnect-renewal
molecule-ai:fix/2212-peer-visibility-missing-model
molecule-ai:fix/2172-provider-validation-setmodel
molecule-ai:fix/2192-manifest-repo-existence-check
molecule-ai:fix/prod-deploy-verify-tenant-lag-2213
molecule-ai:fix/2204-liveness-probe-max-tokens
molecule-ai:fix/internal-805-cf-auth-drift
molecule-ai:fix/internal-804-parser-json-variant
molecule-ai:fix/peer-visibility-test-model-required-2212
molecule-ai:fix/77-bp-directive-4-emitters
molecule-ai:fix/e2e-api-health-wait-migration-chain
molecule-ai:devops/saas-a2a-empty-completion-diagnostic
molecule-ai:fix/e2e-staging-canvas-tabs-red
molecule-ai:fix/e2e-chat-readiness-curl-tempfile-2198
molecule-ai:test/provider-matrix-boot-regression-moonshot
molecule-ai:sre/fix-auto-deploy-writable-home-2193
molecule-ai:fix/e2e-chat-mobile-history-reload-flake
molecule-ai:fix/deploy-production-superseded-false-stale
molecule-ai:fix/manifest-rm-deleted-org-templates
molecule-ai:fix/2158-auto-sync-token-hard-fail
molecule-ai:fix/create-dialog-registry-provider-catalog
molecule-ai:fix/ensure-default-config-stamp-derived-provider
molecule-ai:fix/2183-remove-missing-free-beats-all
molecule-ai:feat/google-adk-platform-provider-mirror-ssot
molecule-ai:fix/core-2176-a2a-full-body-guard
molecule-ai:fix/publish-latest-tag-platform-tenant
molecule-ai:feat/2172-config-save-provider-validation
molecule-ai:feat/handler-admin-test-token
molecule-ai:feat/plugins-listing-and-sources-coverage
molecule-ai:feat-handler-admin-test-token
molecule-ai:test/2175-a2a-full-body-delivery-guard
molecule-ai:regression/2149-scheduler-real-pg
molecule-ai:fix/internal-760-review-event-trigger
molecule-ai:fix/2166-blocker2-integration-fail-open
molecule-ai:dev-b/sec-c-2132-reorder
molecule-ai:fix/2163-cr2-live-fire-freshness
molecule-ai:fix/test-async-cleanup-order
molecule-ai:fix/shellcheck-arm64-pilot-main-red-2146
molecule-ai:docs/2159-pr-head-workflow-selection
molecule-ai:fix/2152-unmask-real-infra-gates
molecule-ai:cherry-pick-2167-suspenders-to-main
molecule-ai:fix/2159-qa-security-auto-trigger-review-state-guard
molecule-ai:cp/469-tenant-proxy-env-delivery
molecule-ai:fix/2162-platform-managed-fail-closed-missing-proxy
molecule-ai:docs-test/gate-auto-fire-livefire-2159
molecule-ai:fix/gate-followup-refire-token-direct-trigger-regression
molecule-ai:regression/2150-migration-replay-from-scratch-real-pg
molecule-ai:ci/unmask-required-real-infra-gates-mc1982
molecule-ai:fix/internal-760-qa-security-pr-review-trigger
molecule-ai:fix/internal-760-ceremony-ai-sop-ack
molecule-ai:runtime/lazy-workspace-id
molecule-ai:fix/2134-chat-files-forward-ssrf-2316
molecule-ai:feat/rfc742-rescue-read
molecule-ai:fix/2131-patch-abilities-atomic
molecule-ai:cr2/sec-d-2316-chat-files-ssrf
molecule-ai:cr2/sec-a-2029-traces-ssrf
molecule-ai:fix/continue-on-error-triage-2113
molecule-ai:feat/rescue-rebase-2019-v2
molecule-ai:feat/rfc742-rescue-capture
molecule-ai:test/handlers-misc-coverage
molecule-ai:fix/errcheck-unchecked-errors-main
molecule-ai:fix/broadcast-org-root-test-cleanup
molecule-ai:fix/broadcast-itest-cleanup-hygiene-2108
molecule-ai:fix/log-execasroot-errors-plugin-cleanup-main
molecule-ai:fix/http-client-timeouts-panic-recovery-error-checks-main
molecule-ai:fix/panic-recovery-goroutines-channels-handlers-scheduler-main
molecule-ai:fix/canvas-e2e-transient-failed-2632-main
molecule-ai:fix/backends-md-drift-risk-6-stale-main
molecule-ai:fix/ci-required-drift-1739
molecule-ai:fix/audit-force-merge-branch-aware
molecule-ai:test/org-scope-abilities-coverage-clean
molecule-ai:fix/renew-coe-tracker-mc774-clean-20260601
molecule-ai:fix/registry-root-sibling-leak-1955
molecule-ai:fix/registry-cancommunicate-cross-tenant-roots-1955
molecule-ai:fix/broadcast-itest-status-enum-online
molecule-ai:fix/rows-affected-core
molecule-ai:fix/broadcast-org-root-cte
molecule-ai:fix/broadcast-org-root-cte-1959
molecule-ai:sync/providers-serving-urls
molecule-ai:fix/staging-test-hermetic-env
molecule-ai:fix/restart-context-defer-rows-close
molecule-ai:fix/channels-rows-err-check
molecule-ai:fix/ci-lint-suppression-1062
molecule-ai:fix/defer-rows-close-audit
molecule-ai:fix/delegation-rows-err-check
molecule-ai:fix/errcheck-unchecked-errors-1062
molecule-ai:fix/execcontext-err-check-high-impact
molecule-ai:fix/execcontext-err-check-sweep2
molecule-ai:fix/execcontext-error-audit
molecule-ai:fix/http-defaultclient-auth-paths
molecule-ai:fix/registry-rows-err-check
molecule-ai:fix/secrets-scan-error-restart
molecule-ai:fix/workspace-restart-rows-err
molecule-ai:pr-3033
molecule-ai:fix/restart-context-rows-err
molecule-ai:fix/discovery-rows-err-check
molecule-ai:fix/broadcast-org-root-cte-1959-staging
molecule-ai:fix/rowserr-checks-events-channels-manager
molecule-ai:fix/rowserr-memory-schedules-audit
molecule-ai:fix/channels-duplicate-encrypt
molecule-ai:fix/audit-rows-err-check
molecule-ai:feat/minimax-m3-sync
molecule-ai:fix/missing-rows-err-llm-billing-mode
molecule-ai:fix/ci-scheduler-fanout
molecule-ai:feat/openapi-management-spec
molecule-ai:pr2056
molecule-ai:fix/channels-memory-rows-err-check
molecule-ai:fix/traces-error-handling
molecule-ai:fix/codeql-sarif-export
molecule-ai:fix/instructions-rows-err-check
molecule-ai:fix/providers-ssot-sync-codex-subscription
molecule-ai:fix/github-token-fallback-timeout-1101
molecule-ai:fix/codex-central-refresher
molecule-ai:feat/google-adk-runtime-ssot
molecule-ai:worktree-agent-aa572c7374a57f03a
molecule-ai:fix/sync-providers-yaml-openai-split-20260531
molecule-ai:feat/workspace-data-persistence
molecule-ai:e2e/google-adk-ci-wiring
molecule-ai:feat/register-google-adk-runtime
molecule-ai:feat/mc-multiperiod-workspace-budget
molecule-ai:feat/schedule-orphan-monitor-cleaner
molecule-ai:fix/schedule-migration-on-recreate
molecule-ai:fix/google-adk-runtime-doc-accuracy
molecule-ai:fix/setglobal-drop-retired-org-billing-guard
molecule-ai:fix/internal-728-provider-matched-cred-injection
molecule-ai:fix/internal-724-prod-auto-deploy-straggler-surfacing
molecule-ai:fix/1994-provision-billing-model-passthrough
molecule-ai:fix/renew-coe-tracker-1982
molecule-ai:test/a2a-queue-status-depth-coverage
molecule-ai:fix/broadcast-cte-non-root-sender-1959
molecule-ai:feat/internal-718-p3b-canvas-consume-registry
molecule-ai:test/patch-abilities-coverage-1312
molecule-ai:feat/internal-718-p4-followup-llm-provider-removal
molecule-ai:fix/cancel-in-progress-flip-1357
molecule-ai:feat/internal-718-p4-pr2-hard-reject-unregistered
molecule-ai:feat/internal-718-p4-pr1-reconcile-colon-vocab-sync
molecule-ai:fix/mcp-tools-slim-residue
molecule-ai:feat/internal-718-p3a-templates-from-registry
molecule-ai:feat/internal-718-p2a-registry-codegen-distribution
molecule-ai:feat/internal-718-p2b-billing-derives-from-provider
molecule-ai:refactor/drop-org-tier-llm-billing-mode
molecule-ai:fix/suppression-rationales-1769
molecule-ai:pr1930
molecule-ai:eng-b/rebase-1952
molecule-ai:fix/ssot-provider-selection-billing-mode-711-713
molecule-ai:fix/1769-suppression-rationales
molecule-ai:fix/byok-global-llm-cred-leak-internal-711
molecule-ai:fix/workspace-broadcast-cte-1959
molecule-ai:fix/1953-scope-peer-discovery-a2a-to-org
molecule-ai:fix/cancel-in-progress-low-risk-9
molecule-ai:fix/cross-tenant-isolation-1953
molecule-ai:fix/python-open-encoding
molecule-ai:fix-1644-workspace-create-returns-auth-token
molecule-ai:fix/1837-docs-stale-monorepo-ref
molecule-ai:fix/review-check-all-403-diagnostic
molecule-ai:fix/audit-force-merge-staging-drift-1739
molecule-ai:fix/nil-safe-scans-validation-hardening
molecule-ai:fix/delegate-async-return-after-marshal-fail
molecule-ai:fix/canvas-user-verified-session-1673
molecule-ai:fix/canvas-chat-poll-mode-1673
molecule-ai:fix/mcp-tools-marshal-error-return
molecule-ai:fix/ci-remove-race-from-blocking-gate-1184
molecule-ai:fix/watchdog-close-stale-contexts-on-red
molecule-ai:fix/time-after-single-retry-delegation
molecule-ai:fix/time-after-goroutine-leaks
molecule-ai:fix/json-marshal-log-continue-2nd-pass
molecule-ai:fix/cp329-retire-config-files-userdata-cap
molecule-ai:fix/703-provider-billing-mode-ui
molecule-ai:fix/internal-703-byok-billing-mode-env
molecule-ai:eng-b-test-1779917746
molecule-ai:fix/workspace-ec2-leak-delete-retry
molecule-ai:fix/ci-arm64-tracker
molecule-ai:fix/1669-syntax-error
molecule-ai:fix/docs-monorepo-refs
molecule-ai:refactor/drop-org-tier-llm-billing-mode-canvas
molecule-ai:fix/publish-buildx-writable-config
molecule-ai:fix/publish-docker-config-api-20260520
molecule-ai:feat/seed-schedules-from-ws-template
molecule-ai:feat/canvas-llm-billing-mode-section
molecule-ai:feat/per-workspace-llm-billing-mode
molecule-ai:fix/memory-v2-upsert-namespace-20260526
molecule-ai:fix/platform-managed-provider-key-leak
molecule-ai:fix/mcp-tools-test-db-import-20260526
molecule-ai:pr-3029
molecule-ai:fix-tiny-readme
molecule-ai:fix-shellcheck-arm64-pilot-runner-label
molecule-ai:feat/canvas-lib-tests
molecule-ai:docs/fix-stale-channel-install-refs-230
molecule-ai:design/modal-a11y-followup
molecule-ai:fix-1769-suppression-justifications
molecule-ai:fix-365-scope-divergence-gate-check
molecule-ai:fix-1763-org-include-test
molecule-ai:docs/readme-quickstart-context
molecule-ai:style/fix-ruff-e501-etc
molecule-ai:fix/main-ci-display-deploy-blockers
molecule-ai:fix/display-keyboard-clipboard
molecule-ai:fix/runtime-template-repo-cache
molecule-ai:fix/create-dialog-platform-defaults
molecule-ai:fix/pending-upload-preview-after-ack
molecule-ai:fix/create-dialog-runtime-provider-flow
molecule-ai:fix/platform-us-default-provider
molecule-ai:fix/seo-template-provider-env-prompt
molecule-ai:chore/advisory-legacy-e2e
molecule-ai:fix/seo-template-visible
molecule-ai:fix/panel-contained-attachment-preview
molecule-ai:fix/pdf-preview-csp
molecule-ai:fix/pdf-preview-visible
molecule-ai:fix/prod-auto-deploy-scoped-rollout
molecule-ai:fix-1763-test-minimal
molecule-ai:feat/llm-native-auth-flow
molecule-ai:fix/issue-1823-delete-confirm-name
molecule-ai:fix/display-control-browser-session
molecule-ai:fix/agent-message-attachment-broadcast
molecule-ai:chore/maintained-runtime-registry
molecule-ai:fix/issue-1686-cost-efficient-workspace-defaults
molecule-ai:fix/hermes-user-attachments-core
molecule-ai:fix/gate-check-v3-ruff-f401-e741
molecule-ai:docs/issue-1793-workspace-placement-rfc
molecule-ai:fix/ruff-batch-2026-05-24
molecule-ai:chore/issue-1760-rename-go-module
molecule-ai:fix/platform-managed-llm-default
molecule-ai:chore/issue-1812-remove-backfill-from-image
molecule-ai:fix/ruff-f401-f541-f841-e741-batch
molecule-ai:fix/ruff-e501-merge-queue
molecule-ai:fix-1763-webhook-token-redaction-skip
molecule-ai:fix/ruff-final-batch-f401-e741-f841
molecule-ai:fix/ruff-e501-batch-4
molecule-ai:fix/ruff-lint-batch-3
molecule-ai:fix/ruff-lint-more-scripts
molecule-ai:fix/user-message-fanout-1440
molecule-ai:fix/workspace-compute-settings-control
molecule-ai:fix/1763-finding-3-token-test-integration-tag
molecule-ai:fix-1775-deploy-wait-alignment
molecule-ai:fix/memory-plugin-nil-jsonb-marshal
molecule-ai:fix/pv-staging-tenant-auth
molecule-ai:fix/real-user-upload-staging-e2e
molecule-ai:feat/issue-1791-bundle-memory-backfill
molecule-ai:feat/issue-1754-mcp-memory-activity-broadcast
molecule-ai:feat/issue-1791-memories-commit-v2-plugin
molecule-ai:fix-1763-discord-token-test
molecule-ai:chore/remove-stale-runtime-comment
molecule-ai:fix/revert-1781-templates-runtime-relax
molecule-ai:chore/remove-unmaintained-runtimes
molecule-ai:fix/e2e-orphan-guard
molecule-ai:docs/issue-1780-compensating-status-runbook
molecule-ai:fix/issue-1778-templates-test-fixtures
molecule-ai:fix/templates-supported-runtime-tests
molecule-ai:fix/prod-auto-deploy-aggregate-context
molecule-ai:chore/issue-1753-awareness-docs-sweep
molecule-ai:chore/issue-1755-seed-initial-memories-v2
molecule-ai:fix/ci-all-required-bookkeeping
molecule-ai:fix/supported-runtime-catalog
molecule-ai:chore/issue-1733-memory-plugin-schema-isolation
molecule-ai:chore/issue-1735-remove-awareness-backend
molecule-ai:fix/memory-list-rows-err
molecule-ai:feat/1686-display-session-proxy
molecule-ai:chore/issue-1733-a1-kill-v1-fallback
molecule-ai:fix/issue-1734-memory-tab-v2
molecule-ai:fix/codex-scheduled-a2a-timeout
molecule-ai:fix/prod-auto-deploy-nonblocking
molecule-ai:fix/arm64-pilot-label-macfix
molecule-ai:fix/review-check-empty-pr-guard
molecule-ai:fix/canvas-publish-docker-config
molecule-ai:fix/channels-manager-rows-err
molecule-ai:fix/rows-err-restart-discovery
molecule-ai:fix/slack-webhook-response-body-close
molecule-ai:fix/sweeper-rows-err
molecule-ai:feat/1686-display-workspace-flow
molecule-ai:fix-1700-A-github-token-http-timeout
molecule-ai:fix/workspace-crud-descrows-err
molecule-ai:task342/local-e2e-harness
molecule-ai:fix/messagestore-extractfiles-unmarshal
molecule-ai:fix/pgplugin-writejson-encode-error
molecule-ai:feat/1686-display-control-ui
molecule-ai:fix/discord-read-body-error
molecule-ai:fix/capturebroadcaster-data-race
molecule-ai:fix-scheduler-detect-result-kind-message-allow
molecule-ai:fix/lark-read-body-error
molecule-ai:fix/memory-decode-error-read-body
molecule-ai:fix/slack-read-body-errors
molecule-ai:fix/traces-read-body-error
molecule-ai:fix/schedules-events-rows-err
molecule-ai:fix/channels-json-unmarshal-errors
molecule-ai:rfc-1706-openapi-phase1-schedules
molecule-ai:fix/mcp-tools-scanpeers-err
molecule-ai:fix/handlers-rows-err-batch
molecule-ai:fix/slack-webhook-response-body-close-clean
molecule-ai:fix/github-token-http-timeout
molecule-ai:minimax-autonomous-test
molecule-ai:fix/scheduler-1696-sdk-error-detection
molecule-ai:fix/1696-scheduler-adapter-error-status
molecule-ai:feat/1686-phase1-compute-schema
molecule-ai:fix/1692-mount-schedule-routes
molecule-ai:fix/1684-native-session-enqueue-on-busy
molecule-ai:fix/1646-staging-saas-timeout
molecule-ai:fix/ci-path-scope-main-push
molecule-ai:fix/e2e-wait-after-config-put
molecule-ai:fix/e2e-delegation-a2a-retry
molecule-ai:fix/e2e-minimax-m2-default
molecule-ai:platform-kill-defaultmodel-require-model-at-create
molecule-ai:fix/e2e-a2a-busy-retry
molecule-ai:fix/e2e-a2a-readiness-body
molecule-ai:fix/t4-pid-probe-agent-safe
molecule-ai:fix/t4-gitea-egress-ssot
molecule-ai:docs-fix-claude-code-channel-template
molecule-ai:fix/activity-flat-upload-attachments
molecule-ai:fix/aws-secrets-janitor-literal-region
molecule-ai:fix/activity-feed-peer-info-enrichment
molecule-ai:fix/aws-secrets-janitor-fail-loud
molecule-ai:fix/aws-secrets-janitor-staging
molecule-ai:fix/staging-token-diagnostic
molecule-ai:chore/publish-staging-ecr-with-ssot-publisher
molecule-ai:fix/e2e-bash32-empty-array
molecule-ai:chore/mirror-tenant-image-staging-ecr
molecule-ai:fix/mcp-delegate-platform-path
molecule-ai:chore/retrigger-peer-visibility-after-publish
molecule-ai:fix/publish-buildx-docker-config
molecule-ai:docs/multi-external-workspace-registration
molecule-ai:fix/e2e-token-fallback-diagnostics
molecule-ai:ci/clean-superseded-push-noise
molecule-ai:ci/path-scope-go-handler-pr
molecule-ai:fix/main-red-watchdog-action-run-status-filter
molecule-ai:fix/admin-workspace-token-mint
molecule-ai:test/e2e-chat-a2a-dns-regression
molecule-ai:fix/staging-peer-visibility-token
molecule-ai:chore/delete-core-workspace-runtime
molecule-ai:fix/split-heavy-e2e-required-path
molecule-ai:fix/ci-cron-bots-prebake-1357
molecule-ai:fix/self-delegation-peer-list-hardening
molecule-ai:fix/523-allow-user-set-workspace-secrets
molecule-ai:feat/canvas-org-info-tab
molecule-ai:fix/624-file-write-restart-debounce
molecule-ai:fix/377-canvas-polite-cancel-before-restart
molecule-ai:task227/external-mcp-progress-ux
molecule-ai:fix/canvas-chat-a2a-hint-activity-tab-closeout-212
molecule-ai:fix/t4-probe-docker-socket-and-pid-host
molecule-ai:chore/ssot4-delete-dead-github-workflows
molecule-ai:task335/drop-runtime-image-pins-mig-fresh
molecule-ai:chore/ssot10-ecr-registry-var
molecule-ai:fix/sop-checklist-stream-pagination-oom
molecule-ai:task335/drop-dead-runtime-image-pins-mig-047
molecule-ai:fix/a2a-error-hint-timeout-class
molecule-ai:fix/a2a-error-detail-field-rename
molecule-ai:feat/uploads-limits-ssot-task-320
molecule-ai:core-devops/cascade-structural-hardening
molecule-ai:chore/retrigger-publish-after-eacces
molecule-ai:fix/poll-mode-pending-uploads-100mb-mc1588
molecule-ai:fix/redeploy-fleet-confirm-callers
molecule-ai:fix/lint-workflow-yaml-slash-in-name
molecule-ai:retrigger/publish-workspace-server-after-pr110-deploy
molecule-ai:infra-runtime-be/upload-100mb-and-correct-reason-errors
molecule-ai:infra-sre/rfc596-publish-runtime-dual-push-gitea-pypi
molecule-ai:fix/workflow-name-no-token-slash
molecule-ai:infra-sre/audit-log-phase1-emit-secrets
molecule-ai:fix/main-red-watchdog-skip-cancel-cascade-mc1564
molecule-ai:feat/rfc563-ws-server-binary-strip
molecule-ai:ci/146-lint-no-tenant-gitea-token
molecule-ai:feat/agent-card-identity-seed-prod-team-internal-492-followup
molecule-ai:fix/rfc524-layer1-bare-go-conversion
molecule-ai:fix/ci-docker-host-guardrail-red
molecule-ai:test/e2e-todays-pr-coverage
molecule-ai:feat/146-forbidden-env-guard
molecule-ai:fix/sop-checklist-widen-ack-internal-442
molecule-ai:ci/mac-arm64-pilot-shellcheck
molecule-ai:e2e/peer-visibility-local-backend-task166
molecule-ai:fix/canvas-surface-error-detail
molecule-ai:fix/wsserver-broadcast-error-detail
molecule-ai:ci/oom-storm-concurrency-fix
molecule-ai:fix/chat-upload-ssot-100mb-1520
molecule-ai:feat/provisioner-inject-gitea-credential-helper
molecule-ai:sre/fix-remaining-scheduled-cancel-in-progress
molecule-ai:fix/user-message-role-1514
molecule-ai:sre/fix-gate-check-cancel-in-progress
molecule-ai:sre/fix-ci-drift-false-positive-and-queue-limit
molecule-ai:ci-retry-noop
molecule-ai:test/plugin-listing-coverage-1488
molecule-ai:infra/canvas-ci-retry-20260518145806
molecule-ai:fix/json5-comments-manifest-1496
molecule-ai:test/canvas-hook-coverage
molecule-ai:feat/canvas-agent-abilities-toggle
molecule-ai:fix/sop-tier-check-secrets-read-v2
molecule-ai:fix/canvas-configtab-wcag-alert-v2
molecule-ai:fix/canvas-configtab-wcag-alert
molecule-ai:fix/sop-tier-check-secrets-read
molecule-ai:fix/ci-sop-tier-check-secrets-read
molecule-ai:fix/runtime-registry-manifest-v2
molecule-ai:test/runtime-provision-timeouts-coverage
molecule-ai:fix/sev1-secrets-read-v2
molecule-ai:fix/sev1-missing-secrets-read-perms
molecule-ai:test/canvas-secret-formats-coverage
molecule-ai:test/canvas-hook-tests
molecule-ai:test/canvas-theme-ts-coverage
molecule-ai:feat/canvas-agent-abilities-toggles
molecule-ai:test/canvas-theme-lib-coverage
molecule-ai:fix/runtime-registry-json5-comment
molecule-ai:fix/ws-server-188-failclosed-template-runtime
molecule-ai:test/plugins-listing-coverage
molecule-ai:fix/issue-1480-manifest-json5
molecule-ai:fix/review-check-wrong-event-string-diagnostic
molecule-ai:test/workspace-abilities-name-coverage
molecule-ai:ci-fix-main-runtime-secret-scan
molecule-ai:fix/secret-scan-exclude-secrets-detector-test-fixtures
molecule-ai:fix/secrets-read-qa-security-main
molecule-ai:fix/secrets-read-qa-security-workflows
molecule-ai:test/workspace-broadcast-coverage
molecule-ai:fix/1473-bp-all-required-suffix
molecule-ai:infra/secrets-read-qa-security-main-fix
molecule-ai:fix/pr1450-staging-main-conflict
molecule-ai:fix/issue-1420-actionable-errors
molecule-ai:fix/issue-228-user-message-fanout
molecule-ai:design/externalconnectmodal-a11y
molecule-ai:fix/tabs-error-aria-alert
molecule-ai:fix/settings-a11y-fixes
molecule-ai:fix/canvas-errors-aria-alert
molecule-ai:fix/canvas-loading-aria-live
molecule-ai:sre/fix-scheduled-workflow-cancel-in-progress
molecule-ai:feat/handler-test-abilities-and-sources
molecule-ai:fix/handlers-plugin-listing-tests
molecule-ai:fix/tabs-a11y-scattered
molecule-ai:runtime/port-identity-tools-staging
molecule-ai:runtime/fix-merge-queue-cancel-in-progress
molecule-ai:fix/canvas-misc-wcag-fixes
molecule-ai:infra/quirks-789-fills
molecule-ai:infra/queue-runbook-updates
molecule-ai:design/skills-accessibility-v2
molecule-ai:design/skills-a11y-followup
molecule-ai:fix/a2a-delegation-detached-ctx-canceled-internal-497
molecule-ai:fix/secrets-honest-ui-491-490
molecule-ai:design/mobile-comms-a11y
molecule-ai:design/mobile-chat-a11y
molecule-ai:test/org-import-pure-funcs
molecule-ai:fix/mcp-tools-sql-fix
molecule-ai:fix/delegation-list-shows-both-directions
molecule-ai:design/mobile-tabbar-a11y
molecule-ai:feat/mobile-tabbar-a11y
molecule-ai:fix/mobile-ios-focus-zoom
molecule-ai:fix/mobile-canvas-render-parity
molecule-ai:ci/arm64-advisory-mac-offload-pilot
molecule-ai:fix/canvas-user-message-cross-session-fanout
molecule-ai:test/a2a-proxy-pure-coverage
molecule-ai:fix/mobile-focus-visible-rings
molecule-ai:fix/external-workspace-progress-feedback
molecule-ai:fix/canvas-mobile-ws-wake-resume
molecule-ai:fix/mobile-chat-input-ios-focus-zoom
molecule-ai:test/org-helpers-coverage
molecule-ai:ci/timing-test-hygiene-host-load-internal
molecule-ai:fix/setup-node-pin-corrupt-1432
molecule-ai:fix/ci-required-drift-polling-sentinel
molecule-ai:fix/issue212-actionable-agent-error-reason
molecule-ai:runtime/fix-api03-test-fixture
molecule-ai:test/traces-list-http-coverage
molecule-ai:runtime/fix-test-fixture-v3
molecule-ai:runtime/fix-test-fixture-on-1420
molecule-ai:fix/queue-status-sort
molecule-ai:runtime/fix-test-fixture-secret-scan-false-positive
molecule-ai:test/workspace-abilities-coverage-20260517
molecule-ai:fix/sop-engineers-main
molecule-ai:fix/queue-merge-permanent-error
molecule-ai:fix/delegations-list-deduplication
molecule-ai:fix/canvas-npm-ci
molecule-ai:fix/sop-staging-engineers-backport
molecule-ai:offsec-015-staging-v2
molecule-ai:fix/queue-skip-permanent-merge-error
molecule-ai:design/settings-button-focus-v2
molecule-ai:test/coverage-broadcast-listing-20260517
molecule-ai:fix/workspace-tokens-global-sentinel-500
molecule-ai:fix/sop-workflow-secrets-read
molecule-ai:test/coverage-abilities-design-tokens-20260517
molecule-ai:design/agentcomms-focus-visible
molecule-ai:design/skills-aria-accessibility
molecule-ai:infra/action-sha-pin-e2e-chat
molecule-ai:fix/sop-checklist-na-gate-probe-bug
molecule-ai:test/coverage-2026-05-17
molecule-ai:fix/queue-merge-error-surfacing-v2
molecule-ai:test/all-coverage-v5
molecule-ai:fix/settings-panel-focus-visible
molecule-ai:sre/ci-coldrunner-main-fix
molecule-ai:fix/skills-tab-focus-visible
molecule-ai:test/all-coverage-v4
molecule-ai:test/all-coverage-v3
molecule-ai:fix/aria-live-errors-v2
molecule-ai:fix/canvas-attachment-focus-visible
molecule-ai:fix/queue-merge-error-surfacing
molecule-ai:test/all-coverage-v2
molecule-ai:fix/app-page-focus-v2
molecule-ai:fix/app-page-focus-visible
molecule-ai:fix/delete-dialog-focus
molecule-ai:fix/sop-checklist-probe-na-gate
molecule-ai:test/all-handler-lib-coverage
molecule-ai:test/handlers-and-lib-coverage-v2
molecule-ai:test/delegation-sweeper-pure-funcs
molecule-ai:fix/queue-update-then-wait-loop
molecule-ai:fix/workspace-abilities-test-coverage
molecule-ai:test/workspace-crud-validators
molecule-ai:fix/canvas-user-message-persist-at-ingest
molecule-ai:test/handlers-and-lib-coverage
molecule-ai:fix/filetree-wcag-icons
molecule-ai:fix/mobile-wcag-focus-visible
molecule-ai:sre/pr1381-retrigger
molecule-ai:infra/add-missing-workflow-concurrency
molecule-ai:infra/scheduled-workflow-cancel-in-progress
molecule-ai:fix/canvas-wcag-focus-visible-2
molecule-ai:ci/twine-verbose-403-reason-body
molecule-ai:test/handlers-and-theme-coverage
molecule-ai:fix/ci-required-drift-skip-f1
molecule-ai:fix/sop-checklist-na-declarations
molecule-ai:test/workspace-abilities-and-theme
molecule-ai:test/plugins-sources-and-theme
molecule-ai:sre/comment-dispatch-consolidation-v2
molecule-ai:chore/remove-crewai-deepagents-gemini-cli
molecule-ai:test/workspace-broadcast-handler
molecule-ai:test/workspace-abilities-patch
molecule-ai:fix/inbox-self-echo
molecule-ai:feat/test-status-config-constants
molecule-ai:feat/test-plugins-install-handlers
molecule-ai:test/local-provisioner-token-ownership-parity
molecule-ai:infra/internal-462-publish-deploy-lane
molecule-ai:fix/staging-sync-persist-fix
molecule-ai:feat/broadcast-coverage
molecule-ai:__disk-test-137017
molecule-ai:fix/main-red-watchdog-close-on-pending
molecule-ai:fix/review-refire-comments-token-scope
molecule-ai:feat/canvas-abilities-banner-test
molecule-ai:pr-1307
molecule-ai:staging-dev-lead-test-4107230
molecule-ai:feat/workspace-abilities-test-coverage
molecule-ai:ci/scheduled-cancel-in-progress-1357
molecule-ai:feat/broadcast-test-coverage
molecule-ai:fix/a2a-queue-status-coverage
molecule-ai:pr-1351
molecule-ai:ci/e2e-peer-visibility-bp-pending-1296
molecule-ai:ci/e2e-peer-visibility-bp-required-1328
molecule-ai:fix/review-refire-conflict
molecule-ai:sre/consolidated-main-to-staging
molecule-ai:fix/org-helpers-duplicate-comment
molecule-ai:fix/a2a-self-delegation-echo-inbox
molecule-ai:perf/canvas-favicon-shrink
molecule-ai:perf/canvas-toolbar-logo-shrink
molecule-ai:perf/canvas-bundle-analyzer-optimize-imports
molecule-ai:fix/offsec-015-staging
molecule-ai:fix/workspace-token-injection-agent-owned
molecule-ai:ci/sop-checklist-narrow-issue-comment-trigger
molecule-ai:fix/broadcast-handler-coverage-1343
molecule-ai:fix/test-patchAbilities-toolbar-1313-1334
molecule-ai:docs/gitea-actions-quirks-runbook
molecule-ai:fix/1256-enable-button-focus-ring
molecule-ai:pr-1327
molecule-ai:feat/workspace-sizing-override
molecule-ai:fix/sop-checklist-na-post
molecule-ai:canvas/broadcast-chat-wcag
molecule-ai:fix/test-matchesChatID-1304
molecule-ai:test/canvas/FileTree-render-a11y
molecule-ai:test/canvas/ChatTab-subtab-a11y
molecule-ai:test/canvas/SidePanel-a11y-and-state
molecule-ai:enforce/peer-visibility-bp-directive-1296
molecule-ai:infra/main-ci-retrigger
molecule-ai:sre/queue-api-fix
molecule-ai:fix/handlers-untested-helpers-2026-05-16
molecule-ai:sre/sop-na-fix
molecule-ai:promote/staging-to-main
molecule-ai:infra/detect-changes-shallow-v2
molecule-ai:feat/publish-lane-runs-on-394
molecule-ai:test/canvas/FilesToolbar-a11y
molecule-ai:fix/workspace-abilities-coverage-1312
molecule-ai:fix/sop-checklist-merged-blank-line
molecule-ai:fix/e2e-chat-setup-node-mirror-sha
molecule-ai:e2e/peer-visibility-local-backend
molecule-ai:fix/secrets-coverage-compile-err-1274
molecule-ai:e2e/peer-visibility-mcp-gate
molecule-ai:fix/e2e-chat-setup-node-mirror
molecule-ai:fix/canvas-arrangeChildren-coverage
molecule-ai:sre/fix-queue-null-created-at-sort
molecule-ai:fix/sop-checklist-blank-line-detect
molecule-ai:fix/a2a-proxy-test-async-drain
molecule-ai:fix/handlers-admin-delegations-coverage
molecule-ai:sre/platform-go-timeout-60m
molecule-ai:infra/sop-tier-check-token-guard
molecule-ai:fix/handlers-test-async-drain
molecule-ai:fix/gate-check-login-aliases
molecule-ai:fix/secrets-scan-test-fixture-exclusion
molecule-ai:fix/secrets-coverage-tests-v2
molecule-ai:fix/ci-concurrency-cancel-superseded-storm
molecule-ai:fix/secret-scan-exclude-secrets-tests
molecule-ai:fix/secrets-patterns-100pct-coverage
molecule-ai:fix/secrets-100-coverage
molecule-ai:standalone/review-check-403-fix
molecule-ai:feat/files-agent-home-stub
molecule-ai:feat/agent-home-docker-exec-internal-425-phase-2b
molecule-ai:sre/secret-scan-timeout
molecule-ai:feat/canvas-files-agent-home-internal-425-phase-3
molecule-ai:fix/top-level-modules-add-a2a-tools-identity
molecule-ai:feat/secrets-patterns-ssot-internal-425-phase-2a
molecule-ai:stub/files-api-agent-home-root-2026-05-15
molecule-ai:fix/sop-n-a-v2
molecule-ai:fix/files-api-agent-home-stub
molecule-ai:be/workspace-server-accumulated-fixes
molecule-ai:fix/sop-n-a-clean
molecule-ai:design/themetoggle-test-teardown-fix
molecule-ai:feat/canvas-growParentsToFitChildren-coverage
molecule-ai:fix/openclaw-skip-config-write-and-canvas-timeout-to-main
molecule-ai:feat/agent-card-update-and-runtime-identity-tools-relocated
molecule-ai:fix/openclaw-skip-config-write-and-canvas-timeout
molecule-ai:fix/prod-auto-deploy-timeout
molecule-ai:feat/chat-unify-clean
molecule-ai:fix/autobump-skip-existing-tags
molecule-ai:fix/issue-1187-broadcast-abilities-coverage
molecule-ai:fix/runtime-autobump-next-free-tag
molecule-ai:pr-1211
molecule-ai:feat/queue-status-abilities-handler-tests
molecule-ai:fix/queue-channels-coverage
molecule-ai:infra-sre/golangci-lint-connectivity-fix
molecule-ai:infra/main-sop-na-fix
molecule-ai:fix/staging-golangci-30m-v2
molecule-ai:fix/scheduler-coverage-gaps
molecule-ai:fix/channels-rows-err-and-cwe312
molecule-ai:fix/container-name-no-uuid-truncation
molecule-ai:fix/staging-golangci-noconfig
molecule-ai:fix/provider-base-url-fallback
molecule-ai:fix/provisioner-uuid-no-truncate
molecule-ai:fix/queue-label-filter-all-ids
molecule-ai:fix/review-check-403-skip
molecule-ai:fix/ki-010-container-name-truncation
molecule-ai:fix/provisioner-no-uuid-truncation
molecule-ai:fix/issue-1176-db-db-race
molecule-ai:fix/channels-rows-err
molecule-ai:test/issue-1156-messaging-coverage
molecule-ai:sre/fix-test-sop-parse-directives
molecule-ai:infra/staging-sop-na-fix
molecule-ai:test/workspace-adapter-base-coverage
molecule-ai:sre/fix-sop-test-parse-directives
molecule-ai:fix/pr-1070-push-tokens
molecule-ai:test/push-package-coverage
molecule-ai:hotfix/offsec-015-org-isolation
molecule-ai:infra/sop-n-a-plus-drift-fix
molecule-ai:fix/issue-1183-settingspanel-act-wrap
molecule-ai:pr-1185-current
molecule-ai:infra/main-golangci-no-config
molecule-ai:test/qa-broadcast-abilities-coverage
molecule-ai:fix/delegations-list-endpoint-wrong-column
molecule-ai:core-be/fix/platform-go-timeout
molecule-ai:fix/issue-1152-delegation-activity-db-err-tests
molecule-ai:core-be/fix/tokens-rate-limit-scan-err-v2
molecule-ai:fix/handlers-rows-err-missing
molecule-ai:infra/canvas-deploy-reminder-polling-list
molecule-ai:fix/staging-ci-timeouts
molecule-ai:fix/settingspanel-act-flush
molecule-ai:fix/rows-err-instructions-resolve
molecule-ai:fix/ci-cold-runner-timeout
molecule-ai:fix/issue-1171-rows-err-memory-events-channels
molecule-ai:fix/sentinel-remove-phas3-masked
molecule-ai:infra/fix-all-required-combined-status-check
molecule-ai:pr1165-rebase
molecule-ai:fix/approvals-json-marshal-guard
molecule-ai:feat/canvas-broadcast-handler
molecule-ai:sre/fix-ci-drift-false-positive
molecule-ai:sre/fix-queue-remove-label-bug
molecule-ai:infra/workspace-server-healthcheck
molecule-ai:fix/ci-drift-canvas-deploy-reminder
molecule-ai:fix/offsec-015-broadcast-org-isolation
molecule-ai:fix/delegation-list-callee-plus-golangci-lint
molecule-ai:sre/fix-queue-gate-context
molecule-ai:core-be/test/delegate-record-db-errors-v2
molecule-ai:fix/tokens-rate-limit-scan-err
molecule-ai:pr-1117
molecule-ai:pr-1117-latest
molecule-ai:infra/staging-golangci-no-config
molecule-ai:fix/openclaw-molecule-mcp-version-pin
molecule-ai:offsec015
molecule-ai:fix/openclaw-mcp-version-check
molecule-ai:feat/provider-routing-base-v2
molecule-ai:feat/e2e-chat-stabilization
molecule-ai:fix/sop-concurrency-throttle
molecule-ai:p1102
molecule-ai:p1117
molecule-ai:fix/canvas-deploy-reminder-deadlock
molecule-ai:infra/main-golangci-timeout-fix
molecule-ai:feat/provider-routing-base
molecule-ai:sre/sweep-cf-orphans-aws-timeout
molecule-ai:sre/queue-merge-conflict-handling
molecule-ai:fix/na-declarations-gate
molecule-ai:fix/handlers-log-db-scan-errors
molecule-ai:fix/channels-marshal-errors
molecule-ai:fix/channels-silent-json-errors
molecule-ai:sre/channels-unmarshal-errors
molecule-ai:sre/queue-pre-receive-hook-fix
molecule-ai:sre/ci-timeout-increase
molecule-ai:fix/approvals-terminal-db-err-logging
molecule-ai:infra/ci-platform-go-timeout-fix
molecule-ai:fix/push-notifications
molecule-ai:fix/channels-json-unmarshal-guard
molecule-ai:fix/main-rows-err-instructions
molecule-ai:fix/main-test-fix-from-0c152a24
molecule-ai:fix/staging-offsec010-cp-wiring
molecule-ai:fix/handlers-instructions-test-bugs
molecule-ai:fix/ci-allrequired-needs
molecule-ai:fix/staging-goasync-configseed
molecule-ai:fix/issue-1080-org-helpers-comment
molecule-ai:fix/issue-1081-errors-import
molecule-ai:fix/1080-org-helpers-comment-typo
molecule-ai:infra-sre/fix-missing-test-imports
molecule-ai:fix/offsec-010-wiring
molecule-ai:fix/saas-t4-cp-config-seed
molecule-ai:fix/offsec-010-clean
molecule-ai:fix/offsec-003-boundary-wrapping
molecule-ai:fix/offsec-003-escaped-markers-main
molecule-ai:fix/mobile-chat-history
molecule-ai:fix/staging-CWE-78-rows-err
molecule-ai:fix/1062-mobilechat-history
molecule-ai:hotfix/cwe-78-staging
molecule-ai:fix/stdio-v2
molecule-ai:fix/offsec-010-symlink-walkdir
molecule-ai:fix/test-stdio-function-name
molecule-ai:fix/offsec-010-symlink-walkdir-isSaaS-fix
molecule-ai:sre/fix-stale-platform-server-port
molecule-ai:fix/offsec-010-from-pr1047
molecule-ai:staging-v6
molecule-ai:fix/e2e-api-port-collision
molecule-ai:fix/main-async-db-race
molecule-ai:infra/sync-staging-v6-to-main
molecule-ai:pr/1030
molecule-ai:fix/handlers-instructions-test-compile
molecule-ai:fix/instructions-test-compile
molecule-ai:fix/openclaw-empty-required-keys
molecule-ai:sre/main-rows-err-checks
molecule-ai:fix/staging-v6-conflict-markers
molecule-ai:fix/delegation-list-test-conflict-marker
molecule-ai:fix/main-red-cdb0b040-ci-tests
molecule-ai:fix/theme-toggle-selector-main-red
molecule-ai:sre/ci-required-drift-canvas-reminder-skip
molecule-ai:test/instructions-handler-coverage
molecule-ai:sre/canvas-build-timeout
molecule-ai:test/externalconnectmodal
molecule-ai:fix/resolve-conflict-marker-delegation-list-test
molecule-ai:fix/1008-themetoggle-css-selector
molecule-ai:design/826-searchdialog-mount-v2
molecule-ai:test/orgcancelbutton
molecule-ai:fix/2088-themetoggle-queryselectorall-errors
molecule-ai:design/704-tree-test-fix
molecule-ai:fix/ci-required-drift-github-ref-skip
molecule-ai:ci/975-db-pollution-fix
molecule-ai:fix/968-remove-duplicate-test-declarations
molecule-ai:fix/980-schedules-handler-test-coverage
molecule-ai:design/tier-legend-contrast-2026-05-14
molecule-ai:sre/platform-go-timeout-fix
molecule-ai:fix/delegation-list-test-db-leak
molecule-ai:fix/984-delegation-id-response-body
molecule-ai:sre/queue-bot-fix-ctx-check
molecule-ai:fix/983-remove-duplicate-test-declarations
molecule-ai:fix/986-canvas-wcag-focus-rings
molecule-ai:fix/993-agent-handler-test-coverage
molecule-ai:design/wcag-focus-contrast-2026-05-14
molecule-ai:design/wcag-focus-rings-round5-2026-05-14
molecule-ai:fix/activity-logs-delegation-id-response-body
molecule-ai:fix/982-expand-posix-identifier-guard
molecule-ai:fix/test-offsec003-redundant-file
molecule-ai:feat/976-schedules-handler-test-coverage
molecule-ai:fix/org-helpers-test-panic
molecule-ai:promote/main-to-staging-v5
molecule-ai:fix/965-test-panic-resolveInsideRoot
molecule-ai:promote/main-to-staging-v4
molecule-ai:feat/delegation-list-tests
molecule-ai:fix/test-a2a-sanitization-v3
molecule-ai:promote/main-to-staging-v3
molecule-ai:fix/duplicate-test-declarations
molecule-ai:feat/org-helpers-security-tests
molecule-ai:fix/main-push-operational-red
molecule-ai:promote/main-to-staging-v2
molecule-ai:fix-sop-concurrency-v2
molecule-ai:fix/sop-checklist-gate-name
molecule-ai:fix/docker-info-pipefail
molecule-ai:fix/publish-healthcheck-pipefail
molecule-ai:fix/sop-checklist-workflow-rename
molecule-ai:promote/main-to-staging
molecule-ai:sre/fix-sop-checklist-context-name-mc948
molecule-ai:design/wcag-contrast-round4-2026-05-14
molecule-ai:fix/org-helper-tests
molecule-ai:fix/test-a2a-sanitization-main
molecule-ai:fix/publish-image-on-every-main-push
molecule-ai:fix/remove-canvas-reminder-from-all-required
molecule-ai:fix/staging-integration-test-ctx
molecule-ai:fix/staging-canvas-reminder-deadlock
molecule-ai:design/wcag-a11y-round3-2026-05-14
molecule-ai:ci/remove-canvas-reminder-from-all-required
molecule-ai:fix/test-a2a-sanitization-assertions
molecule-ai:fix/staging-ci-drift-canvas-reminder
molecule-ai:fix/handlers-pg-integ-event-before
molecule-ai:ci/platform-build-flip-coe
molecule-ai:fix/staging-python-test-and-tier-check-lint
molecule-ai:fix/offsec-006-slug-injection
molecule-ai:runtime/fix-pr916-integration-test-ctx
molecule-ai:design/chat-tab-wcag-contrast-2026-05-14
molecule-ai:fix/offsec-006-slug-validation
molecule-ai:design/wcag-contrast-fixes-2026-05-14
molecule-ai:fix/904-handler-test-blockers
molecule-ai:fix/ci-drift-canvas-reminder
molecule-ai:fix/comment-trigger-storm
molecule-ai:infra/660-codify-promote-tenant-image
molecule-ai:fix/917-canvas-test-failures
molecule-ai:fix/917-runtime-prbuild-detect-changes-fix
molecule-ai:fix/filesTab-test-stale-reference
molecule-ai:fix/files-tab-test-missing-helper
molecule-ai:fix/runtime-prbuild-compat-detect-changes
molecule-ai:fix/staging-test-compilation-fixes
molecule-ai:fix/qa-review-token-fallback-v2
molecule-ai:test/hydrate-canvas-coverage
molecule-ai:fix/contextmenu-react-error-185
molecule-ai:test/external-runtimes-coverage
molecule-ai:fix/main-sqlmock-import-ineffassign-20260513
molecule-ai:fix/redeploy-tenants-on-main-lint-cleanup
molecule-ai:sre/docker-daemon-gate-fix
molecule-ai:fix/897-listdelegations-use-ledger-table
molecule-ai:fix/901-listdelegations-ledger-table
molecule-ai:fix/core-main-handlers-hotfix
molecule-ai:fix/e2e-api-platform-port
molecule-ai:fix/main-green-monitor-status
molecule-ai:fix/mobile-MobileChat-infinite-render
molecule-ai:fix/delegations-ledger-fallback-rows-err
molecule-ai:fix/874-extractmessagetext-clean
molecule-ai:feat/881-untested-helpers
molecule-ai:fix/874-extractmessagetext-bug
molecule-ai:fix/status-reaper-api-timeout-retry-20260513130514
molecule-ai:fix/831-admin-token-placeholder-bootstrap
molecule-ai:feat/canvas-test-coverage-738
molecule-ai:feat/files-tab-tree-coverage
molecule-ai:feat/canvas-untested-components-coverage
molecule-ai:feat/canvas-tab-test-coverage-2
molecule-ai:fix/main-bundle-test-sqlmock-import
molecule-ai:fix/stdio-fallback-all-environments
molecule-ai:ci/burn-in-remove-sop-tier-check-coe
molecule-ai:fix/issue-860-delivery-mode-tests
molecule-ai:design/approval-banner-emerald-fix
molecule-ai:fix/issue-854-termsgate-a11y
molecule-ai:fix/issue-859-wcag-contrast
molecule-ai:fix/delegations-rows-err-bbc40cb8
molecule-ai:design/approvalbanner-a11y
molecule-ai:design/pricingtable-a11y
molecule-ai:design/toolbar-help-toggle-fix
molecule-ai:staging-sync-v2
molecule-ai:fix/canvas-approvalbanner-a11y
molecule-ai:feat/canvas-external-connect-modal-coverage
molecule-ai:staging-sync-rm
molecule-ai:fix/test-sanitize-agent-error-stderr
molecule-ai:test/a2a-queue-extractExpiresInSeconds
molecule-ai:fix/pr-829-test-issues
molecule-ai:design/826-searchdialog-mount
molecule-ai:fix/chat-createMessage-attachments-key
molecule-ai:fix/762-recall-memory-canary
molecule-ai:fix/367-a2a-tools-coverage-v2
molecule-ai:feat/search-dialog-mount
molecule-ai:feat/org-layout-test-coverage
molecule-ai:fix/offsec-003-builtin-a2a-sanitize
molecule-ai:fix/canvas-playwright-install-timeout
molecule-ai:fix/805-audit-force-merge-main-required-checks
molecule-ai:fix/cf-sweep-api-error
molecule-ai:fix/e2e-diagnose-detail
molecule-ai:fix/a2a-mcp-server-http-transport
molecule-ai:fix/core-main-red-golangci-install
molecule-ai:fix/test-declarations
molecule-ai:fix/sop-checklist-body-hard-gate
molecule-ai:merge-792
molecule-ai:feat/mcp-tools-test-coverage
molecule-ai:feat/workspace-crud-test-coverage
molecule-ai:feat/socket-handler-test-coverage
molecule-ai:fix/686-delegation-integration-tests
molecule-ai:feat/a2a-proxy-helpers-test-coverage
molecule-ai:fix/publish-canvas-disable-gha-cache-20260512
molecule-ai:fix/publish-canvas-docker-probe-20260512
molecule-ai:fix/canvas-image-ecr-20260512
molecule-ai:fix/687-send-ssh-public-key-detail
molecule-ai:feat/tier-2g-required-context-exists-in-bp
molecule-ai:feat/tier-2f-bp-emit-match
molecule-ai:fix/mc-664-class-2-mcp-offsec-contract-test
molecule-ai:fix/main-ci-green-20260512
molecule-ai:infra/dockerfile-add-docker-cli-for-local-build
molecule-ai:test/workspace-crud-helpers-coverage
molecule-ai:fix/681-recallmemory-offsec-contract
molecule-ai:fix/org-layout-helpers-test-coverage
molecule-ai:fix/735-extractResponseText-tests
molecule-ai:test/713-workspace-crud-validators
molecule-ai:test/713-org-helpers-pure-coverage
molecule-ai:fix/713-eic-diagnose-detail
molecule-ai:fix/730-filterpeers-nil-guard
molecule-ai:infra/all-required-coe-false-v2
molecule-ai:fix/phase3-tracker-comments
molecule-ai:fix/mc-664-class-1-delegation-tests-postgres-integration
molecule-ai:fix/canvas-keyboard-shortcuts-dialog-guard
molecule-ai:infra/664-lint-coe-trackers
molecule-ai:ci/lint-tracker-regex-fix-v2
molecule-ai:fix/731-nil-guard-filter-peers-by-query
molecule-ai:fix/lint-TRACKER_RE-mid-sentence
molecule-ai:ci-retrigger-747
molecule-ai:feat/709-handler-pure-coverage
molecule-ai:fix/697-canvas-geticon-topology
molecule-ai:ci/lint-tracker-regex-fix
molecule-ai:test/2071-canvas-drop-target-badge-coverage
molecule-ai:feat/2071-canvas-orgdeploystate-coverage
molecule-ai:feat/mobile-canvas-comms-spawn-coverage
molecule-ai:ci/lint-coe-self-fix
molecule-ai:fix/ssm-refresh-ecr-auth-json-escaping
molecule-ai:design/729-fix
molecule-ai:ci/gate-check-v3-permissions-fix
molecule-ai:fix/730-discovery-filter-nil-role
molecule-ai:infra/publish-docker-daemon-diagnostic
molecule-ai:fix/714-all-required-coe-false
molecule-ai:fix/717-mobile-agentMessages-selector
molecule-ai:infra/fix-all-required-status-reporting
molecule-ai:fix/687-e2e-surface-diagnose-detail
molecule-ai:infra/docker-runner-label
molecule-ai:test/701-canvas-hydrate-coverage
molecule-ai:test/mobile-primitives-coverage
molecule-ai:infra/664-interim-platform-build-exempt
molecule-ai:fix/693-offsec-recallmemory-scrub-staging
molecule-ai:sync/main-to-staging-514-v2
molecule-ai:fix/693-offsec-recallmemory-global-scrub
molecule-ai:fix/693-offsec-recallmemory-scrub
molecule-ai:fix/634-handler-test-fixes-to-main
molecule-ai:test/699-socket-handler-coverage
molecule-ai:sre/workflow-run-replacement
molecule-ai:infra/676-ssm-auth-json-hardening
molecule-ai:fix/offsec-001-method-scrub-hotfix
molecule-ai:fix/offsec-001-method-scrub-main
molecule-ai:feat/workspace-crud-validation-tests
molecule-ai:test/canvas-hydrate-coverage
molecule-ai:infra/lint-pre-flip-continue-on-error
molecule-ai:fix/workflow_run-to-push-gitea-1.22.6
molecule-ai:feat/tier-2e-tracking-issue
molecule-ai:fix/684-offsec-scrub-method-default
molecule-ai:feat/sop-checklist-gate-mvp
molecule-ai:feat/tier-2d-lint-mask-pr-atomicity
molecule-ai:infra/lint-workflow-yaml-hostile-shapes
molecule-ai:infra/lint-required-no-paths-filter
molecule-ai:cleanup/pr-641-clean
molecule-ai:feat/mobile-tabbar-wcag-a11y
molecule-ai:fix/canvas-mobile-chat-loop
molecule-ai:fix/651-canvas-chat-mobile-crash
molecule-ai:fix/664-interim-remask-platform-build
molecule-ai:fix/mobile-chat-max-update-depth
molecule-ai:infra/622-force-merge-protection-fix
molecule-ai:test/attachment-lightbox-clean-v2
molecule-ai:ci/652-gitea-1-22-status-key
molecule-ai:test/memorytab-2
molecule-ai:infra/status-reaper-rev4-status-key-fix
molecule-ai:infra/weekly-platform-go-vet-hard
molecule-ai:fix/audit-force-merge-pipefail
molecule-ai:infra/status-reaper-rev3-widen-window
molecule-ai:test/canvas-externalconnectmodal-coverage
molecule-ai:fix/sop-tier-check-token-graceful
molecule-ai:infra/ci-required-drift-token-scope
molecule-ai:test/console-modal-coverage
molecule-ai:ci/review-check-tests-wire
molecule-ai:test/canvas-workspacenode-coverage
molecule-ai:test/memorytab
molecule-ai:infra/interim-disable-reaper-watchdog-crons
molecule-ai:test/attachment-lightbox-coverage
molecule-ai:fix/issue-639-workspacenode-test-coverage
molecule-ai:test/channels-tab
molecule-ai:fix/canvas-searchdialog-test-fixtures
molecule-ai:fix/598-attachmentLightbox-tests
molecule-ai:fix/529-307-localbuild-async-test-fix
molecule-ai:fix/582-attachmentviews-tests
molecule-ai:fix/308-a2a-response-push-mode-tests
molecule-ai:fix/529-preflight-localbuild
molecule-ai:fix/sop-tier-check-token-graceful-staging
molecule-ai:fix/545-approvalbanner-isolation
molecule-ai:fix/519-memorytab-tests
molecule-ai:infra/status-reaper-rev2-sweep-recent-commits
molecule-ai:fix/handlers-test-fixtures
molecule-ai:test/skill-helpers-coverage
molecule-ai:test/ui-primitive-coverage
molecule-ai:docs/gitea-quirks-10-11
molecule-ai:test/platform-bundle-exporter-coverage
molecule-ai:infra/status-reaper-rev1-drop-concurrency
molecule-ai:fix/608-filesTab-focusTest
molecule-ai:test/budget-section-coverage
molecule-ai:infra/revert-docker-runner-label
molecule-ai:fix/weekly-platform-go-latent-error-surface
molecule-ai:infra/revert-publish-runs-on-pin
molecule-ai:sre/gate-check-timeout
molecule-ai:test/a2a-error-hint-coverage
molecule-ai:test/chat-attachment-views-coverage
molecule-ai:test/attachment-video-coverage
molecule-ai:infra/option-b-status-reaper
molecule-ai:infra/gate-check-v3-timeout
molecule-ai:infra/576-docker-runner-label
molecule-ai:fix/593-filetab-tests
molecule-ai:test/files-tab-notavailablepanel-coverage
molecule-ai:fix/591-forminputs-tests
molecule-ai:fix/471-cwe117-stderr-scrubbing
molecule-ai:infra/diagnostic-publish-workspace-server-image
molecule-ai:fix/582-bundle-import-tests
molecule-ai:test/form-inputs-coverage
molecule-ai:fix/publish-workspace-server-image-json5-comments
molecule-ai:sre/fix-all-required-null-result
molecule-ai:fix/publish-workspace-server-image-optional-token
molecule-ai:pr-251
molecule-ai:test/ui-statusbadge-coverage
molecule-ai:fix/all-required-null-result-assertion
molecule-ai:fix/568-palette-context-tests
molecule-ai:pr-527
molecule-ai:infra/merge-563-autobump-fix
molecule-ai:test/mobile-palette-context-coverage
molecule-ai:sre/fix-gate-check-v3-combined-state-loop
molecule-ai:ci/540-review-check-bats-tests
molecule-ai:fix/publish-runtime-autobump-push-condition
molecule-ai:ci/558-verify-publish-runtime-marker
molecule-ai:test/canvas-empty-state-coverage
molecule-ai:infra/publish-runtime-verify-2026-05-11
molecule-ai:ci/554-oci-labels-publish-workflow
molecule-ai:infra/drift-bot-token
molecule-ai:infra/rfc-219-phase-4-all-required-sentinel
molecule-ai:ci/551-gate-checkout-trusted-ref
molecule-ai:fix/gate-check-v3-pr-HEAD-security
molecule-ai:fix/541-token-argv-security
molecule-ai:sre/fix-gate-check-v3-bugs
molecule-ai:fix/537-cwe117-a2a-tools-sanitize
molecule-ai:fix/gate-check-v3-http-error-crash
molecule-ai:sre/fix-localbuild-preflight
molecule-ai:infra/rfc-324-workflow-add
molecule-ai:test/offsec-003-sanitization-backstop
molecule-ai:fix/test-sanitize-agent-error-stderr-exc
molecule-ai:fix/approval-banner-test-isolation
molecule-ai:infra/scope-workflows-fix
molecule-ai:sre/fix-pr530-deadlock
molecule-ai:sre/reopen-516-gate-check-fix
molecule-ai:fix/ci-scope-operational-workflows-504-419
molecule-ai:sre/scope-operational-workflows-to-schedule
molecule-ai:ci/harness-replays-detect-changes-quoting-fix
molecule-ai:fix/test-blocks-until-inflight-completes
molecule-ai:fix/test-enrich-peer-metadata-nonblocking
molecule-ai:sre/fix-enrich-nonblocking-cache-check
molecule-ai:merge-pr490
molecule-ai:runtime/fix-offsec-003-tool-delegate-task
molecule-ai:fix/508-update-boundary-assertions
molecule-ai:sre/fix-test-delegation-sync-polling-assertions
molecule-ai:fix/366-shared-runtime-coverage
molecule-ai:fix/506-unused-imports
molecule-ai:ci/lint-fixes
molecule-ai:fix/367-a2a-tools-coverage
molecule-ai:test/a2a-client-enrich-peer-rebase
molecule-ai:fix/354-delegation-auto-resume-rebase
molecule-ai:ci/fix-detect-changes-commits-array
molecule-ai:fix/307-async-rebase
molecule-ai:runtime/fix-harness-replays-push-event
molecule-ai:sre/fix-test-polling-sanitization
molecule-ai:fix/harness-replays-detect-changes-gitea-api
molecule-ai:ci/fix-test-polling-sanitization
molecule-ai:test/eventstab
molecule-ai:runtime/335-rebase-platfrom-url
molecule-ai:hotfix/491-offsec-003-staging-v2
molecule-ai:fix/pr477-test-fixes
molecule-ai:runtime/335-rebase-platform-url
molecule-ai:fix/354-auto-resume-delegations
molecule-ai:fix/368-audit-hooks-coverage
molecule-ai:runtime/temporal-platform-url-fix
molecule-ai:infra/secret-reconciliation-v2
molecule-ai:fix/purchase-success-modal-test-isolation
molecule-ai:pr-476
molecule-ai:sre/fix-gitea-runbook-network-quirks
molecule-ai:tools/gate-check-v3
molecule-ai:fix/376-activity-delegation-polling
molecule-ai:runtime/platform-url-fix-merge
molecule-ai:fix/canvas-purchase-success-modal-test-timing
molecule-ai:fix/secret-naming-reconciliation
molecule-ai:docs/gitea-operational-quirks-runbook
molecule-ai:test/canvas-toolbar-coverage
molecule-ai:fix/canvas-tier-config-v2
molecule-ai:fix/455-offsec003-sanitize-alignment
molecule-ai:fix/sweep-stale-e2e-orgs-secret-name
molecule-ai:fix/approvalbanner-mockreset-452
molecule-ai:fix/canvas-approvalbanner-mockreset
molecule-ai:fix/publish-runtime-autobump-fetch-depth
molecule-ai:fix/321-cwe22-loadWorkspaceEnv-path-traversal
molecule-ai:fix/canonicalize-staging-admin-token-rebase-462
molecule-ai:canvas-followup
molecule-ai:fix/canonicalize-staging-admin-token-rest
molecule-ai:refactor/drop-canary-prefix
molecule-ai:fix/canvas-test-and-design-fixes
molecule-ai:runtime/432-followup-helper-extraction
molecule-ai:fix/harness-replays-detect-changes-fetch-depth
molecule-ai:fix/stderr-include-a2a-error-response
molecule-ai:feat/internal-292-sop-tier-refire
molecule-ai:docs/update-remote-agent-tutorial-sdk-api
molecule-ai:fix/canvas-confirm-dialog-backdrop-a11y-v3
molecule-ai:fix/canvas-confirm-dialog-backdrop-a11y-v2
molecule-ai:fix/388-github-token-501-gitea-staging
molecule-ai:fix/dialog-backdrop-a11y
molecule-ai:runtime/414-idle-loop-skip-pending-results-v3
molecule-ai:fix/test-extract-tool-trace
molecule-ai:fix/test-plugins-atomic-tar-coverage
molecule-ai:fix/harness-replays-fetch-depth
molecule-ai:fix/test-instructions-handler-coverage
molecule-ai:sre/fix-workflow-secret-naming
molecule-ai:fix/canvas-tiers-config-string-keys
molecule-ai:fix/offsec-003-promote-to-main
molecule-ai:fix/class-e-secret-name-reconciliation
molecule-ai:fix/sop-tier-check-apt-get-first
molecule-ai:fix/307-async-test-pollution
molecule-ai:fix/sop-tier-check-jq-install-order
molecule-ai:fix/canvas-test-failures-2026-05-10
molecule-ai:runtime/fix-a2a-tools-duplicate-error-block-v2
molecule-ai:infra/sop-tier-check-jq-install-fix
molecule-ai:runtime/fix-a2a-push-delivery-mode
molecule-ai:feat/main-never-red-watchdog-internal-420
molecule-ai:feat/internal-219-phase-2bc-port-to-molecule-core
molecule-ai:fix/a11y-canvas-clean
molecule-ai:sweep/internal-219-cat-C1-port-gates-lints
molecule-ai:sweep/internal-219-cat-B-delete-github-only
molecule-ai:sweep/internal-219-cat-A-delete-mirrored
molecule-ai:fix/offsec-003-json-endpoint-sanitize
molecule-ai:sweep/internal-219-cat-C3-port-deploy-janitors
molecule-ai:sweep/internal-219-cat-C2-port-e2e
molecule-ai:fix/publish-runtime-cascade-sha-capture
molecule-ai:feat/internal-219-phase-3-port-ci-yml
molecule-ai:fix/413-a2a-delegation-offsec-003
molecule-ai:runtime/381-idle-loop-pending-messages
molecule-ai:fix/delegations-rows-err-check
molecule-ai:fix/a11y-canvas-buttons-staging
molecule-ai:runtime/fix-399-a2a-delegation-missing-import-v2
molecule-ai:fix/380-cwe59-symlink-traversal
molecule-ai:fix/388-github-token-501-staging
molecule-ai:fix/confirm-dialog-wcag-backdrop
molecule-ai:infra/sop-tier-check-jq-script-fallback
molecule-ai:fix/revert-391-broken-jq-install
molecule-ai:fix/a2a-tools-duplicate-dead-code
molecule-ai:fix/confirm-dialog-backdrop
molecule-ai:fix/canvas-confirm-dialog-backdrop-a11y
molecule-ai:infra/jq-install-main
molecule-ai:fix/sop-tier-check-jq-main
molecule-ai:fix/canvas-dialog-backdrop-a11y
molecule-ai:fix/388-github-token-501
molecule-ai:runtime/offsec-003-polling-path-v2
molecule-ai:fix/361-sanitize-delegation-results
molecule-ai:runtime/offsec-003-executor-sanitize
molecule-ai:fix/cwe22-loadWorkspaceEnv-main
molecule-ai:fix/qa-audit-307-308-clean
molecule-ai:ci/fix-293-sqlalchemy-pip-install
molecule-ai:fix/354-delegation-auto-resume
molecule-ai:runtime/platform-url-host-docker-internal
molecule-ai:fix/canvas-repair-tests-344
molecule-ai:fix/canvas-statusdot-ts-errors
molecule-ai:test/molecule-audit-hooks-coverage
molecule-ai:test/a2a-tools-and-send-message-coverage
molecule-ai:fix/sop-tier-check-jq-install
molecule-ai:test/shared-runtime-helpers-coverage
molecule-ai:fix/canvas-topology-sort-orphan
molecule-ai:fix/executor-helpers-offsec-003-sanitize
molecule-ai:runtime/offsec-003-polling-path
molecule-ai:fix/354-a2a-delegation-auto-resume
molecule-ai:runtime/fix-a2a-push-delivery-mode-v2
molecule-ai:fix/publish-runtime-add-_sanitize_a2a-to-allowlist
molecule-ai:fix/publish-runtime-missing-working-directory
molecule-ai:ci/add-sqlalchemy-to-pip-install
molecule-ai:ci-resolve-github-gitea-triplicate
molecule-ai:sre/offsec-003-boundary-escape
molecule-ai:fix/sec-321-path-traversal-clean
molecule-ai:fix/a2a-proxy-response-header-timeout-v2
molecule-ai:fix/publish-runtime-workflow-dispatch-inputs
molecule-ai:fix/a2a-push-mode-queue-envelope
molecule-ai:fix/351-split-publish-runtime-triggers
molecule-ai:feat/348-publish-runtime-restore-path-trigger
molecule-ai:fix/issue-workspace-dup-name-409-autosuffix
molecule-ai:fix/security-OFFSEC003-boundary-escape-334
molecule-ai:fix/security-CWE22-loadWorkspaceEnv-330
molecule-ai:fix/canvas-test-fixes-20260510
molecule-ai:fix/canvas-extractMessageText
molecule-ai:fix/qa-307-async-pollution-direct
molecule-ai:test/a2a-client-enrich-peer-metadata
molecule-ai:fix/docs-309-remote-faq-staging-env
molecule-ai:fix/qa-308-push-mode-queue-tests
molecule-ai:fix/qa-307-async-pollution
molecule-ai:runtime/fix-plugin-registry-import-path
molecule-ai:fix/a2a-proxy-response-header-timeout-clean
molecule-ai:fix/publish-workspace-server-ci-clone-manifest-retry-main
molecule-ai:infra/remove-pr303-tracking
molecule-ai:fix/issue-296-plugin-registry-sysmodules
molecule-ai:infra/pin-compose-image-digests
molecule-ai:chore/sync-main-to-staging
molecule-ai:fix/sec-321-path-traversal
molecule-ai:fix/a2a-proxy-response-header-timeout
molecule-ai:docs/a11y-billing-wcag-patterns
molecule-ai:fix/qa-307-test-a2a-inbox-wrappers-asyncio-refactor
molecule-ai:runtime/fix-test-config-model-isolation
molecule-ai:ci/docker-daemon-health-guard
molecule-ai:docs/fix-remote-workspaces-faq
molecule-ai:fix/publish-workspace-server-ci-clone-manifest-retry
molecule-ai:fix/test-config-env-isolation
molecule-ai:ci/staging-sha-pinning
molecule-ai:fix/external-connection-user-facing-urls
molecule-ai:fix/workspace-server-registry-config-helper
molecule-ai:fix/issue-272-sqlalchemy-ci-install
molecule-ai:fix/canvas-yaml-utils-nested-arrays-clean
molecule-ai:fix/self-delegation-guard
molecule-ai:promote/staging-to-main-100546
molecule-ai:fix/a2a-tools-v2
molecule-ai:fix/a2a-tools-and-workflow-cleanup
molecule-ai:fix/canvas-test-isolation-fixes-v2
molecule-ai:fix/molecule-model-env-go
molecule-ai:runtime/fix-delegate-empty-parts-regression
molecule-ai:infra/runtime-doc-playwright-limitation
molecule-ai:fix/offsec-001-error-message-scrubbing
molecule-ai:fix/offsec-001
molecule-ai:fix/a2a-tools-string-error-handling-clean
molecule-ai:fix/core-248-pluginresolver-and-plgh
molecule-ai:infra/fix-source-resolver-dup
molecule-ai:fix/model-provider-misnomer
molecule-ai:fix/a2a-tools-string-error-handling-v2
molecule-ai:fix/canvas-yaml-utils-test-failure
molecule-ai:fix/a2a-tools-string-error-handling
molecule-ai:fix/internal-214-gosum-vanity-import
molecule-ai:fix/canvas-test-isolation-fixes
molecule-ai:chore/canvas-statusbadge-test-fix-cherry-pick
molecule-ai:fix/canvas-statusbadge-test-role-ambiguity
molecule-ai:runtime/fix-mcp-client-localhost-default
molecule-ai:fix/core-257-delegation-test-stray-brace
molecule-ai:revert/core-d0126662-restart-signals-undefined-h
molecule-ai:revert/core-123-plugin-drift-detector
molecule-ai:ci/pin-action-and-base-images
molecule-ai:fix/org-232-per-workspace-required-env-preflight
molecule-ai:fix/ssrf-guard-before-begintx
molecule-ai:test/issue-232-per-workspace-required-env-preflight
molecule-ai:fix/issue232-org-import-required-env-aggregation
molecule-ai:fix/canvas-ts-test-errors
molecule-ai:fix/delegations-list-ledger-fallback
molecule-ai:wip-snapshot-2026-05-10/mac/molecule-core-tmp53-git-token-helper-wip
molecule-ai:wip-snapshot-2026-05-10/mac/molecules-org-molecule-core-registry-prefix
molecule-ai:fix/pluginresolver-conflict
molecule-ai:wip-snapshot-2026-05-10/core-be/fix-pluginresolver-conflict
molecule-ai:wip-snapshot-2026-05-10/core-qa/stash-package-lock-diff
molecule-ai:feat/keyboard-shortcuts-dialog
molecule-ai:wip-snapshot-2026-05-10/core-uiux/feat-keyboard-shortcuts-dialog
molecule-ai:wip-snapshot-2026-05-10/core-fe/test-canvas-design-tokens-config
molecule-ai:test/canvas-cssvar-tests
molecule-ai:fix/internal-229-sop-tier-check-tier-low-relaxation
molecule-ai:test/canvas-utility-pure-tests
molecule-ai:test/canvas-preflight-utils-tests
molecule-ai:test/canvas-runtimeprofiles-tests
molecule-ai:test/canvas-yaml-utils-tests
molecule-ai:test/canvas-pure-function-tests
molecule-ai:fix/ci-port-publish-workspace-server-image-228
molecule-ai:fix/ssrf-validate-agent-url-212
molecule-ai:ci/sop-tier-check-approver-teams-fix
molecule-ai:fix/sop-tier-check-legacy-flip-229
molecule-ai:wip-snapshot-2026-05-10/core-be/fix-ki001-telegram-disable-channel
molecule-ai:wip-snapshot-2026-05-10/core-be/feat-a2a-pre-restart-drain-125
molecule-ai:wip-snapshot-2026-05-10/core-be/feat-plugin-drift-queue-123
molecule-ai:fix/sweeper-race-error-counter
molecule-ai:infra/fix-issue-75-gh-cli-gitea-sweep
molecule-ai:wip-snapshot-2026-05-10/core-be/fix-gh-api-gitea-sweep-75
molecule-ai:feat/keyboard-shortcuts-dialog-test
molecule-ai:wip-snapshot-2026-05-10/core-be/fix-sweeper-test-isolation-86
molecule-ai:ci/fix-issue-87-root-skip
molecule-ai:fix/test-local-resolver-root-skip
molecule-ai:fix/workspace-tests-clear-auth-cache
molecule-ai:wip-snapshot-2026-05-10/core-be/fix-a2a-delegation-success-rendered-as-error
molecule-ai:wip-snapshot-2026-05-10/core-be/fix-files-restart-volume-sync
molecule-ai:wip-snapshot-2026-05-10/core-lead/tech-debt-rename-net
molecule-ai:wip-snapshot-2026-05-10/core-lead/fix-168-mine
molecule-ai:wip-snapshot-2026-05-10/core-lead/fix-167-uiux
molecule-ai:wip-snapshot-2026-05-10/core-fe/stash-canvas-agent-comms-show-task-text
molecule-ai:fix/canvas-agent-comms-show-task-text
molecule-ai:wip-snapshot-2026-05-10/core-lead/fix-vitest-pool
molecule-ai:fix/info-disclosure-errors
molecule-ai:infra/add-temporal-to-main-compose
molecule-ai:design/verify-canvas-design-system
molecule-ai:fix/workspace-persona-git-identity
molecule-ai:fix/175-env-matched-pair-guard
molecule-ai:wip-snapshot-2026-05-10/core-lead/fix-149
molecule-ai:refactor/sop-tier-check-extract-script
molecule-ai:fix/sop-tier-check-pr-target-security
molecule-ai:ci/sop-tier-check-deploy
molecule-ai:fix/issue53-admin-token-pair-guard
molecule-ai:fix/org-import-started-event-name
molecule-ai:refactor/delete-uses-cascade-helper
molecule-ai:fix/org-import-reconcile-and-audit
molecule-ai:fix/preserve-model-secret-on-restart
molecule-ai:feat/persona-bind-mount-local-dev
molecule-ai:feat/canary-tier-filter
molecule-ai:feat/plugin-version-subscription
molecule-ai:feat/plugin-hot-reload-classifier
molecule-ai:feat/plugin-atomic-install
molecule-ai:feat/air-hot-reload-dev
molecule-ai:feat/persona-env-injection
molecule-ai:fix/external-resolver-hardening
molecule-ai:fix/issue75-class-D-gh-api-to-gitea-rest
molecule-ai:fix/cherry-3-files-vitest-postgres-e2eapi
molecule-ai:fix/promote-vitest-postgres-fixes
molecule-ai:fix/saas-plugin-install-eic
molecule-ai:fix/issue-94-e2e-api-parallel-safe-class-b
molecule-ai:migrate/issue-71-vanity-imports
molecule-ai:fix/handlers-postgres-port-collision-class-b
molecule-ai:fix/issue-96-canvas-vitest-cold-start-timeout
molecule-ai:fix/hermes-agent-doc-gitea-migration
molecule-ai:fix/196-retarget-main-to-staging-gitea-rest
molecule-ai:fix/gitea-ci-flakes-issue-88
molecule-ai:fix/pin-upload-artifact-v3-gitea
molecule-ai:fix/issue-72-auto-sync-token-canary-v2
molecule-ai:fix/issue75-class-F-gh-run-list-to-statuses
molecule-ai:fix/issue75-class-A-gh-pr-to-gitea-rest
molecule-ai:feat/issue-63-local-build-from-gitea-v2
molecule-ai:fix/195-auto-promote-staging-gitea-rest
molecule-ai:fix/144-branch-protection-check-name-parity-audit
molecule-ai:fix/harness-replays-pre-clone-manifest
molecule-ai:chore/trigger-auto-sync-verification
molecule-ai:fix/codeql-stub-on-gitea-156
molecule-ai:chore/issue173-retrigger-after-ecr-repo-create
molecule-ai:fix/issue173-inline-aws-ecr-login
molecule-ai:fix/issue173-shell-docker-push
molecule-ai:chore/retrigger-harness-replays-post-class-g
molecule-ai:fix/issue173-buildx-driver-and-cache
molecule-ai:fix/post-suspension-clone-manifest
molecule-ai:fix/issue173-followup-platform-dockerfile
molecule-ai:fix/post-suspension-github-urls
molecule-ai:fix/170-goroutine-bleed-test-isolation
molecule-ai:fix/issue173-publish-workspace-server-image
molecule-ai:fix/issue36-a2a-proxy-preflight
molecule-ai:fix/codeql-continue-on-error-156
molecule-ai:feat/demo-mock-3-bigorg-mock-runtime
molecule-ai:feat/demo-mock-1-purchase-success-modal
molecule-ai:fix/publish-path-filter-add-scripts
molecule-ai:fix/clone-manifest-gitea
molecule-ai:chore/touch-publish-workflow-to-trigger
molecule-ai:chore/retrigger-publish-post-aws-secrets
molecule-ai:chore/cherry-pick-pr23-into-main
molecule-ai:chore/backsync-main-into-staging-task-166
molecule-ai:fix/auto-sync-use-devops-token
molecule-ai:chore/retrigger-staging-on-fixed-runner-image
molecule-ai:chore/drop-github-app-auth-and-ecr-swap
molecule-ai:docs/readme-comprehensive-refresh-2026-05-06
molecule-ai:feat/rfc-2945-pr-c-2-canvas-chat-history
molecule-ai:fix/issue10-runtime-aware-plugin-install
molecule-ai:fix/s8-bind-loopback-dev
molecule-ai:fix/14-cascade-gitea-dispatch
molecule-ai:docs/molecule-core-bulk-sed
molecule-ai:chore/pin-artifact-actions-v3
molecule-ai:fix/lowercase-org-slug
molecule-ai:fix/script-ghcr-and-lint-paths
molecule-ai:docs/workspace-runtime-readme-source-edit
molecule-ai:feat/eic-tunnel-pool-core-11
molecule-ai:chore/rfc-2945-pr-c-3-delete-historyhydration
molecule-ai:fix/2872-sqlmock-regex-tightening
molecule-ai:fix/cp-orphan-sweeper-2989
molecule-ai:feat/registry-prefix-env-driven-issue-6
molecule-ai:docs/readme-refresh-2026-05-06
No Reviewers
Labels
Clear labels
area/ci
do-not-auto-merge
kind/infrastructure
merge-queue
merge-queue-hold
platform/go
release-blocker
release-test
security
test-label-sre
tier:high
tier:low
tier:medium
triage-test
wip
CI/CD pipeline issues
Opt out of autonomous merge-queue merging
Infrastructure-related issues
Ready for serialized Gitea merge queue
Temporarily hold PR in merge queue
Go platform test issues
Blocks the staging→main promotion / a release
High risk per dev-sop §SOP-6 — ceo only, 24h cooldown
Low risk per dev-sop §SOP-6 — engineers/managers/ceo can approve
Medium risk per dev-sop §SOP-6 — managers/ceo can approve
test
Work in progress — do not auto-merge
No Label
tier:low
Milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
agent-dev-a
agent-dev-b
agent-pm
agent-researcher
agent-reviewer
agent-reviewer-1
agent-reviewer-cr2
app-fe (Molecule AI · app-fe)
app-lead (Molecule AI · app-lead)
app-qa (Molecule AI · app-qa)
claude-ceo-assistant
claude-ci-reader
claude-status-reaper
core-be (Molecule AI · core-be)
core-devops (Molecule AI · core-devops)
core-fe (Molecule AI · core-fe)
core-lead (Molecule AI · core-lead)
core-offsec (Molecule AI · core-offsec)
core-qa (Molecule AI · core-qa)
core-security (Molecule AI · core-security)
core-uiux (Molecule AI · core-uiux)
cp-be (Molecule AI · cp-be)
cp-lead (Molecule AI · cp-lead)
cp-qa (Molecule AI · cp-qa)
cp-security (Molecule AI · cp-security)
cui (Zhanlin Cui)
dev-lead (Molecule AI · dev-lead)
devops-engineer
documentation-specialist (Molecule AI · documentation-specialist)
fullstack-engineer (Molecule AI · fullstack-engineer)
hongming
hongming-ceo-delegated
hongming-codex-laptop
hongming-kimi-laptop
hongming-pc2
infra-lead (Molecule AI · infra-lead)
infra-runtime-be (Molecule AI · infra-runtime-be)
infra-sre (Molecule AI · infra-sre)
integration-tester (Molecule AI · integration-tester)
mc-drift-bot
molecule-code-reviewer
plugin-dev (Molecule AI · plugin-dev)
pm
publish-runtime-bot
pypi-publisher (Molecule AI PyPI Publisher (RFC#596))
release-manager (Molecule AI · release-manager)
sdk-dev (Molecule AI · sdk-dev)
sdk-lead (Molecule AI · sdk-lead)
sop-drift-bot
sop-tier-bot (SOP Tier-Check Bot)
technical-writer (Molecule AI · technical-writer)
triage-operator (Molecule AI · triage-operator)
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: molecule-ai/molecule-core#872
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "staging-sync-v3"
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
🤖 Generated by Release Manager
ROOT CAUSE found in Gitea server logs: actions/workflows.go:DetectWorkflows() [W] ignore invalid workflow "publish-runtime.yml": unknown on type: map["version":{"description":...,"required":true,"type":"string"}] Gitea 1.22.6's workflow parser flattens workflow_dispatch.inputs.* into top-level 'on:' event-keys and rejects the workflow when it doesn't recognize them. Once rejected, the workflow never registers — so NO event triggers it. publish-runtime.yml has 0 runs in action_run since the .gitea port for exactly this reason; the runtime-v1.0.0 tag from yesterday and hongming-pc's runtime-v0.1.130 from tonight both pushed successfully but went nowhere. This supersedes the paths-vs-tags hypothesis from #351 (PR #352). The split is still useful for clarity but was NOT the cause — even the original tags-only port had this same parse failure. Fix: drop the inputs block. workflow_dispatch in Gitea 1.22.6 supports no-input dispatch only. The bash logic for version derivation now uses just two cases: tag-push (strip prefix) or anything-else (PyPI auto-bump). Post-merge verification: - watch for first-ever publish-runtime.yml run in action_run - check Gitea log no longer emits 'ignore invalid workflow' for this file - push a runtime-v0.1.130 tag → workflow fires → PyPI 0.1.130 Refs: #351 (root cause), #348 Q3 (the blocker)First-ever publish-runtime.yml dispatch (run 5097 post-#353, 2026-05-11 02:06Z) failed at the twine upload step: ERROR InvalidDistribution: Cannot find file (or expand pattern): 'dist/*' Cause: the Publish step was missing 'working-directory: ${{ runner.temp }}/runtime-build' while the preceding Build/Verify steps all had it. Result: twine ran from the workspace checkout dir where dist/ doesn't exist. Fix: add working-directory to match the rest of the publish job. This is the second of three workflow defects exposed by #353 finally making the workflow run at all: 1. workflow_dispatch.inputs rejection → fixed in #353 2. Publish step missing working-directory → THIS PR 3. (anything else surfaced by 0.1.130 attempt #2) After merge: push runtime-v0.1.130 again (tag was already pushed once post-#353 but the run failed at publish; need a fresh trigger). Should finally land 0.1.130 on PyPI. Refs: #351, #348 Q3, #353Run 5160 publish-runtime build step failed: error: TOP_LEVEL_MODULES drifted from workspace/*.py contents: in workspace/ but NOT in TOP_LEVEL_MODULES (will ship un-rewritten): ['_sanitize_a2a'] Edit scripts/build_runtime_package.py:TOP_LEVEL_MODULES to match. workspace/_sanitize_a2a.py was added recently but the allowlist in scripts/build_runtime_package.py was not updated. The build script intentionally aborts (exit 3) when it detects the drift, because shipping a module un-rewritten breaks the package's flat-layout import contract. Fix: add '_sanitize_a2a' to the set. Alphabetical order preserved (it sorts before 'a2a_*'). Third workflow defect after #353 (workflow_dispatch.inputs parser) and #355 (Publish step working-directory). After this lands, attempt #4 of runtime-v0.1.130 should finally succeed. Refs: #351, #353, #355, #348 Q3Bug: a2a_response.py:197 returned Queued(method=method) without passing delivery_mode, silently defaulting to "poll" for push-mode busy-queue responses. Callers branching on v.delivery_mode would mis-identify push-mode responses as poll-mode, causing wrong dispatch logic. Fix: pass delivery_mode="push" explicitly in the push-mode branch. Tests: add push_queued_full/notify/no_method fixtures and 4 test cases asserting delivery_mode="push" for all three envelope shapes. Also add adversarial {"queued": "yes"} and {"queued": False} → Malformed guards. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>Sweep companion to PR#372 (ci.yml port), PR#378 (Cat A), PR#379 (Cat B). Ports 9 workflow files from .github/workflows/ to .gitea/workflows/. Each port applies the four-surface audit pattern per feedback_gitea_actions_migration_audit_pattern: 1. YAML — dropped workflow_dispatch.inputs (Gitea 1.22.6 parser rejects them per feedback_gitea_workflow_dispatch_inputs_unsupported), dropped merge_group (no Gitea merge queue), workflow-level env.GITHUB_SERVER_URL pinned per feedback_act_runner_github_server_url. 2. Cache — actions/setup-python cache:pip retained (works with Gitea 1.22.x cache server). No actions/cache@v4 usage in this batch. 3. Token — auto-injected GITHUB_TOKEN (Gitea-aliased) used; no custom dispatch tokens. 4. Docs — top-of-file "Ported from .github/workflows/X.yml on 2026-05-11 per RFC internal#219 §1 sweep" comment on every file. Per RFC §1: each job has `continue-on-error: true` so surfaced defects do not block PRs. Follow-up PR (not in this sweep's scope) flips to `continue-on-error: false` after triage. Files ported: - block-internal-paths.yml — forbidden-path PR gate. Standard port; dropped merge_group + the merge_group-specific fetch step. - cascade-list-drift-gate.yml — TEMPLATES vs manifest.json drift. Passes WORKFLOW=.gitea/workflows/publish-runtime.yml to the script (script's default is .github/... which Cat A removes). - check-migration-collisions.yml — Postgres migration prefix collision gate. The collision script already supports Gitea via _gitea_api_url() / _gitea_token() — no script edit needed. - lint-curl-status-capture.yml — workflow-bash anti-pattern lint. Scanner glob and SELF self-skip path retargeted to .gitea/workflows/**.yml. - runtime-pin-compat.yml — PyPI-latest install + import smoke. Dropped workflow_dispatch + merge_group. - runtime-prbuild-compat.yml — PR-built wheel import smoke. dorny/paths-filter@v4 replaced with inline `git diff` per PR#372 pattern. detect-changes job + per-step if-gates retained. - secret-pattern-drift.yml — canonical/consumer pattern set drift lint. on.paths references the .gitea/ canonical path. Also edits .github/scripts/lint_secret_pattern_drift.py CANONICAL_FILE constant from `.github/workflows/secret-scan.yml` to `.gitea/workflows/secret-scan.yml` (Cat A removes the .github/ one). - test-ops-scripts.yml — scripts/ unittest runner. Dropped merge_group. - railway-pin-audit.yml — daily Railway env var drift detection. `actions/github-script@v9` blocks (which call github.rest.* — a GitHub-specific JS API) replaced with curl calls against the Gitea REST API (/api/v1/repos/.../issues|comments). Issue open/comment-on-repeat/close-on-clean semantics preserved. This Cat C-1 PR groups the "safer" gates/lints/audits. Categories C-2 (E2E) and C-3 (deploy/publish/janitors) ship in separate PRs. The original .github/ files are left in place per RFC §1 (deletion is a Phase 4 follow-up). They are silently dead — Gitea Actions in molecule-core only registers workflows under .gitea/workflows/ — but keeping them documented in-repo eases the diff-review. DO NOT MERGE without orchestrator-dispatched Five-Axis review + @hongmingwang chat-go. Cross-links: - RFC: molecule-ai/internal#219 - Companion: PR#372 (ci.yml port), PR#378 (Cat A), PR#379 (Cat B) - Runbook: runbooks/gitea-actions-migration-checklist.md (Cat B PR) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>Mechanical porter inserted a duplicate `env:` block in .gitea/workflows/publish-canvas-image.yml — the file already had `env: { IMAGE_NAME: ghcr.io/molecule-ai/canvas }` so the second `env: { GITHUB_SERVER_URL: ... }` block triggered Gitea's parser error "yaml: mapping key 'env' already defined". Merged the two blocks into one. Also clarified the dropped workflow_dispatch comment that the porter left dangling above `permissions:`. Verified via fresh `docker logs molecule-gitea-1 --since 5m` after push — no new parser-rejection warnings for publish-canvas-image.yml. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>Mechanical porter inserted a duplicate `env:` block in .gitea/workflows/canary-verify.yml — the file already had an `env: { IMAGE_NAME, TENANT_IMAGE_NAME, CP_URL }` block so the second `env: { GITHUB_SERVER_URL: ... }` block triggered Gitea's parser error "yaml: mapping key 'env' already defined". Merged GITHUB_SERVER_URL into the existing env block. Verified via fresh `docker logs molecule-gitea-1 --since 5m` after push — no new parser-rejection warnings for canary-verify.yml. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>Phase 2b+c port of molecule-controlplane PR#112 (SHA 0adf2098) to molecule-core, per RFC internal#219 §4 (jobs ↔ protection drift) + §6 (audit env ↔ protection drift). ## What this adds 1. .gitea/workflows/ci-required-drift.yml — hourly cron (':17') + workflow_dispatch. AST-walks ci.yml, branch_protections, and audit-force-merge.yml's REQUIRED_CHECKS env. Files/updates a [ci-drift] issue idempotent by title when any pair diverges. 2. .gitea/scripts/ci-required-drift.py — verbatim from CP. PyYAML-based AST detector (NOT grep-by-name), per feedback_behavior_based_ast_gates. Five drift classes: F1, F1b, F2, F3a, F3b. 3. .gitea/workflows/audit-force-merge.yml — reconcile with CP's structure. Moves permissions: to workflow level, adds base.sha- pinning rationale, links to drift-detect, and updates REQUIRED_CHECKS to current branch_protections/main verbatim (2 contexts). 4. tests/test_ci_required_drift.py — 17 pytest cases, verbatim from CP. Stdlib + PyYAML only. Covers F1/F1b/F2/F3a/F3b, happy path, the idempotent-PATCH path, the MUST-FIX find_open_issue() raise-on- transient regression, the --dry-run flag, and api() error contracts. ## Adaptations from CP#112 - secrets.GITEA_TOKEN → secrets.SOP_TIER_CHECK_TOKEN (molecule-core's established read-only token name, used by sop-tier-check and audit-force-merge already). - DRIFT_LABEL tier:high resolves to label id 9 on core (verified 2026-05-11) vs id 10 on CP. - REQUIRED_CHECKS env initialized to molecule-core's actual main protection set (2 contexts: Secret scan + sop-tier-check), not CP's (3 contexts incl. packer-ascii-gate + all-required). - Comment block flags that the 'all-required' sentinel does NOT yet exist in molecule-core's ci.yml (RFC §4 Phase 4 adds it). Until then, the detector exits 3 with ::error:: 'sentinel job not found'. Verified locally: the workflow will be red on the cron until Phase 4 lands — that's intentional + louder than a silent issue. ## Verification - 17/17 pytest cases green locally (Python 3.13, PyYAML 6.0.3). - Hostile self-review: removing the script makes all 17 tests ERROR with FileNotFoundError, confirming they exercise the actual implementation (not happy-path shape-matching). - python3 -m py_compile + bash -n + yaml.safe_load all pass. - Initial dry-run against real molecule-core ci.yml: exits 3 with ::error::sentinel job 'all-required' not found — expected, Phase 4 will add it. ## What does NOT change - audit-force-merge.sh is byte-identical to CP's — no change needed. - No branch protection mutation (that's Phase 4, separate PR). - No CI workflow restructuring (PR#372 already did that). RFC: molecule-ai/internal#219 Source: molecule-controlplane@0adf2098 (PR #112)Adds a sentinel that detects post-merge CI red on `main` and files an idempotent `[main-red] {repo}: {SHA[:10]}` issue. Auto-closes the issue when main returns to green. Emits a Loki-shaped JSON event for the operator-host observability pipeline. Pattern source: CP `0adf2098` (ci-required-drift). Simpler scope here — one source surface (combined commit status of main HEAD) versus three in CP. Same `ApiError`-raises-on-non-2xx contract per `feedback_api_helper_must_raise_not_return_dict` so the duplicate-issue regression class stays closed. Does NOT auto-revert. Option B is explicitly rejected per `feedback_no_such_thing_as_flakes` + `feedback_fix_root_not_symptom`. The watchdog files an alarm; humans fix forward. Files: - .gitea/workflows/main-red-watchdog.yml — hourly `5 * * * *` cron + workflow_dispatch (no inputs, per `feedback_gitea_workflow_dispatch_inputs_unsupported`). - .gitea/scripts/main-red-watchdog.py — sidecar with `--dry-run`. - tests/test_main_red_watchdog.py — 26 pytest cases. Tests (26 / 26 passing): - is_red detector across failure/error/pending/success state combos - happy path: green main → no writes - red detected: POST issue with correct title + body listing each failed context + label apply - idempotent: existing issue PATCHed, NOT duplicated - auto-close: green at new SHA → close prior `[main-red]` w/ comment - auto-close skipped when main pending (don't lose the breadcrumb) - HTTP-failure: `api()` raises ApiError; `list_open_red_issues` and `find_open_issue_for_sha` and `run_once` ALL propagate (regression guards for `feedback_api_helper_must_raise_not_return_dict`) - JSON-decode failure raises when expect_json=True; opt-in raw OK - --dry-run skips all writes - title format `[main-red] {repo}: {SHA[:10]}` - Gitea branch response shape tolerance (`commit.id` OR `commit.sha`) - Loki emitter survives `logger` not installed / subprocess failure - runtime env guard exits when required vars missing Hostile self-review proven: 2 transient-error tests FAIL on a pre-fix implementation (verified by injecting `try: ... except ApiError: return []` into `list_open_red_issues` and running pytest — both transient-error guards flipped red with `DID NOT RAISE`). Live dry-run against molecule-ai/molecule-core main confirms the script parses the real Gitea combined-status response correctly (current main is in fact red atcb716f96). Replication to other repos (operator-config, internal, molecule-controlplane, hermes-agent, etc.) is out of scope for this PR — molecule-core pilot only, per task brief. Tracking: #420.core-devops lens review (review 1075) caught the chained defect: the 3 sweep workflows shell out to `bash scripts/ops/sweep-{aws-secrets,cf-orphans,cf-tunnels}.sh`, and those scripts still consume the OLD env-var names — `need CP_PROD_ADMIN_TOKEN`, `need CP_STAGING_ADMIN_TOKEN`, and `Bearer $CP_PROD_ADMIN_TOKEN` / `Bearer $CP_STAGING_ADMIN_TOKEN` in the CP-admin curl calls. The workflow- level presence-check loop (renamed in the first commit) would pass, then the shell script would `exit 1` at the `need CP_PROD_ADMIN_TOKEN` line. Classic `feedback_chained_defects_in_never_tested_workflows` — the YAML- surface rename looked complete; the actual consumer is one layer deeper. This commit completes the rename in the scripts: - `CP_PROD_ADMIN_TOKEN` -> `CP_ADMIN_API_TOKEN` - `CP_STAGING_ADMIN_TOKEN` -> `CP_STAGING_ADMIN_API_TOKEN` (6 occurrences total per script — comments, `need` checks, `Bearer $...` curl headers — across all 3). The .gitea/workflows/sweep-*.yml files (first commit) export `CP_ADMIN_API_TOKEN: ${{ secrets.CP_ADMIN_API_TOKEN }}` etc., so the scripts now read `$CP_ADMIN_API_TOKEN` — consistent end-to-end. Per core-devops's other (non-blocking) note: `workflow_dispatch` each sweep in dry-run after this lands + after the #425 class-A PUT, to confirm the path beyond the presence-check actually works (the `MINIMAX_TOKEN`-grade shape-match isn't enough — exercise the real CP-admin call). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>Adds first test coverage for canvas/ExternalConnectModal. Tests: renders null when info absent, dialog open/close, default tab selection (Universal MCP vs Python), tab switching and visibility (Hermes/Codex conditional), auth token stamping for Python/MCP/curl snippets, clipboard.writeText API call, close button callback, security warning, Fields tab with (missing) fallback. Radix Dialog tested by rendering with open=true. Clipboard API mocked via Object.defineProperty in beforeEach. renderAndFlush uses act(()=>{}) to synchronously flush Radix portal rendering so dialog queries work without waitFor (which times out under vi.useFakeTimers). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>test_blocks_until_inflight_completes used patch("a2a_client.httpx.Client") to mock the HTTP call, but httpx.Client is created inside the background worker thread AFTER the patch context manager exits — the executor thread was created before the patch, so it uses the original httpx module. The httpx patch approach fails reliably when running with test_envelope_enrichment_fetches_on_cache_miss (different httpx patch, different peer ID, same executor thread pool). Fix: directly replace enrich_peer_metadata on the module so the replacement is visible to the background worker regardless of thread creation timing. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>The detect-changes step's push path used `echo '${{ toJSON(github.event.commits) }}'` which broke on every main push because every main commit is a Gitea merge commit whose message contains single quotes (e.g. "Merge pull request 'fix: ...' from branch into main"). The embedded `'` ended the single-quoted bash string mid-JSON, and a subsequent `(` (e.g. in "#523)") was parsed as a subshell → "syntax error near unexpected token `('". This caused detect-changes to exit 2 → main-red. Fix: pass the JSON via an `env:` block (env values bypass shell quoting entirely) and pipe it to the script using `printf '%s' "$COMMITS_JSON"`. Closes #526. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>Adds the two job-conclusion-as-status review-gate workflows that will replace sop-tier-check (Step 3 of RFC#324). Both: - Trigger on pull_request_target (opened/synchronize/reopened) for the initial status, plus issue_comment for /qa-recheck and /security-recheck slash-command refire (Gitea 1.22.6 doesn't refire on pull_request_review per go-gitea/gitea#33700). - Use job name 'approved' so the published context is 'qa-review / approved' and 'security-review / approved' — NO POST /statuses, NO write:repository scope (RFC#324 v1.1 addendum A1-α). - Privilege-check slash-command commenters via /repos/.../collaborators/{u} (NOT github.event.comment.author_association — that field doesn't exist on Gitea 1.22.6, defect #1 from sop-tier-refire). - Run under pull_request_target's BASE-branch trust boundary; checkout pins to default_branch (never head.sha) and the workflows only HTTP-call the Gitea API; no PR-head code is executed (RFC#324 A4 + internal#116). Shared evaluator lives at .gitea/scripts/review-check.sh, parameterized by TEAM + TEAM_ID. Pass condition: at least one APPROVED, non-dismissed, non-author review whose user is a member of the named team. Branch-protection flip (Step 2) is intentionally NOT included in this PR. That is Owners-tier and blocked on (a) the first run of these workflows capturing the EXACT status-context names, and (b) RFC_324_TEAM_READ_TOKEN provisioning (filed as internal#325). Refs: internal#324, internal#325 (token follow-up). Closes: nothing yet — Steps 2 and 3 must land before #292/#319/#321 close. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>Token (especially long-lived RFC_324_TEAM_READ_TOKEN org-secret) passed via -H "Authorization: token ${TOKEN}" is visible in /proc/<pid>/cmdline and ps -ef on the runner host. Fix: write token to a mode-600 temp file and pass it to curl via -K (curl config file). The token never appears in the argv of any process; curl reads it from the fd-backed file. Affected: - .gitea/scripts/review-check.sh: CURL_AUTH_FILE + -K on all 3 curl calls - .gitea/workflows/qa-review.yml: privilege-check inline curl - .gitea/workflows/security-review.yml: privilege-check inline curl Fixes: #541 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>Adds the `all-required` aggregator sentinel job to .gitea/workflows/ci.yml, mirroring the molecule-controlplane Phase 2a impl. The sentinel needs every non-event-gated job (changes, platform-build, canvas-build, shellcheck, python-lint) and asserts result==success per dep so skipped-as-green can't sneak through. Two immediate effects: 1. .gitea/workflows/ci-required-drift.yml stops hard-failing with exit 3 on the missing sentinel (see comment lines 26-31 of that workflow). 2. Branch protection can now (Step 5 follow-up, separate PR per feedback_never_admin_merge_bypass) point status_check_contexts at the single 'ci / all-required (pull_request)' name and CI churn underneath no longer requires protection edits. NOT in this PR (deferred Step 5 follow-up): - PATCH branch_protections/main to add 'ci / all-required (pull_request)' to status_check_contexts — Owners-tier change, separate PR. - Mirror the same context into audit-force-merge.yml REQUIRED_CHECKS env (RFC §6 — drift detector F3 will flag if the two diverge). Refs: - internal#219 (parent RFC, §2 Aggregator sentinel) - internal#286 (Phase 4 emergency bump — 2026-05-11 broken-merge evidence) - molecule-controlplane Phase 2a (reference impl, CP PR#112) - feedback_phantom_required_check_after_gitea_migration (incident class) - feedback_path_filtered_workflow_cant_be_required (sentinel has no paths: filter; fires on every push/PR per RFC §2) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>Companion to molecule-controlplane PR#134. The `ci-required-drift` detector calls GET /repos/{owner}/{repo}/branch_protections/{branch}, which Gitea 1.22.6 gates behind the repo-ADMIN role. The previous fallback chain (`secrets.SOP_TIER_CHECK_TOKEN || secrets.GITHUB_TOKEN`) had only read or write — neither admin — so drift runs would 403. Switch to `secrets.DRIFT_BOT_TOKEN`, owned by the new least-privilege `mc-drift-bot` persona (team: drift-bot, permission: admin, scope: read:repository,write:issue,read:organization, repos: this + CP). Note: this repo's drift detector additionally requires the `all-required` sentinel job in ci.yml, which is being added in PR#553. After both PRs merge the drift workflow will be fully green. Audit trail in internal#329. Sibling pattern: internal#327 (publish-runtime-bot). Per feedback_per_agent_gitea_identity_default.Adds 22-case coverage for EmptyState — the full-canvas welcome card: - Loading state (GET /templates pending) - Template grid renders with correct name, tier badge, description, skill count, model - Template button calls deploy on click - "Deploying..." label on the deploying template button - Buttons disabled while any deploy is in-flight - "Create blank" button POSTs /workspaces with correct payload - "Creating..." label while POST is pending - selectNode + setPanelTab("chat") called after 500ms on success - Error banner with role=alert on POST failure - Fetch failure / empty templates → only "create blank" button shown Uses vi.hoisted + vi.mock to fully isolate api.get, api.post, useTemplateDeploy, useCanvasStore, and all child components. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>Before returning 201 on /org/import, verify that every RequiredEnv declared at the workspace level is covered by either: (a) a global secret key (already validated by the existing preflight) (b) a key present in the workspace's .env files (org root .env + per-workspace <files_dir>/.env), matching the resolution order used by createWorkspaceTree at runtime Previously, collectOrgEnv correctly walked all tmpl.Workspaces[].RequiredEnv and added them to the global preflight check, but loadConfiguredGlobalSecretKeys only checked global_secrets. Workspace-specific .env files are injected into workspace_secrets AFTER the 201 response, so an unsatisfied per-workspace RequiredEnv returned 201 and the workspace came up NOT CONFIGURED — breaking on every LLM call with no signal to the operator. Changes: - org_import.go: add PerWorkspaceUnsatisfied struct + collectPerWorkspaceUnsatisfied (mirrors createWorkspaceTree's three-source .env resolution stack) - org.go: after the global preflight block, call collectPerWorkspaceUnsatisfied if orgBaseDir != ""; return 412 with per-workspace details before creating any workspaces - org_workspace_required_env_test.go: 8 unit tests covering global coverage, .env coverage, missing keys, any-of groups, nested children, empty orgBaseDir, and multiple workspaces Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>loadWorkspaceEnv returns map[string]string but EnvRequirement.IsSatisfied expects map[string]struct{}. Without this conversion the Go compiler rejects the call, causing CI / Platform (Go) to fail. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>Root cause (verified via runs 14525 + 14526): Gitea 1.22.6 emits commit-status context as <workflow_name> / <job_name> (push) for ANY workflow run on the default-branch HEAD, REGARDLESS of the trigger event. Schedule- and workflow_dispatch-triggered runs therefore paint main red via a fake-push status. No upstream fix in 1.23-1.26.1 (sibling a6f20db1 research; internal#80 RFC). Design — Option B (b2 cron-based compensating-status POST): workflow_run is NOT supported on Gitea 1.22.6 (verified via modules/actions/workflows.go enumeration); cron is the only event-shaped option that fires reliably. Every 5min, .gitea/workflows/status-reaper.yml runs a stdlib + PyYAML scanner that: 1. Walks .gitea/workflows/*.yml. Resolves each workflow_id from top-level 'name:' (else filename stem). Fails LOUD on name-collision OR '/' in name (would break ' / ' context parsing downstream). Classifies each by 'push:' trigger presence (str / list / dict on: shapes all handled). 2. Reads main HEAD's combined commit status. 3. For each failure-state context ending ' (push)': - parses '<workflow_name> / <job_name> (push)'; - skips if workflow not in scan map (conservative); - preserves if workflow has push: trigger (real defect); - else POSTs state=success with the same context to /repos/{o}/{r}/statuses/{sha}, with a description that documents the workaround. Safety: - Only failure-state contexts whose suffix is ' (push)' are compensated. Branch_protections required checks on main (Secret scan, sop-tier-check) have ' (pull_request)' suffix — UNREACHABLE from this code path. Verified 2026-05-11 + test test_reap_required_check_pull_request_suffix_never_touched. - publish-workspace-server-image has a real push: trigger → PRESERVED. mc#576's docker-socket failure stays visible as intended. Explicit test fixture. - api() raises ApiError on non-2xx + JSON-decode failure per feedback_api_helper_must_raise_not_return_dict. Pre-fix 'soft-fail' would silently paint main green via omission. Persona: claude-status-reaper (Gitea uid 94, write:repository) — provisioned 2026-05-11 21:39Z by sub-agent aefaac1b. Token under secrets.STATUS_REAPER_TOKEN (no other write surface touched). Acceptance (post-merge verify, Step-5): Trigger one class-O workflow via workflow_dispatch (e.g. sweep-cf-tunnels). Observe reaper compensate the resulting (push)-suffix failure on the next 5-min tick. Real push-triggered failures (publish-workspace-server-image) MUST still red main. Removal path: Drop this workflow + script + tests when Gitea is upgraded to >= 1.24 with a fix for the hardcoded-suffix bug, OR when an upstream patch lands (internal#80 RFC). Tracked in post-merge audit issue. Cross-links: - sibling internal#327 (publish-runtime-bot) - sibling internal#328 (mc-drift-bot) - sibling internal#329 (Gitea dispatcher race) - sibling internal#330 (disk-GC cron Gitea-class bug) - upstream internal#80 (Gitea hardcoded-suffix RFC) - mc#576 (preserved by design — real push-trigger failure) - sub-agent aefaac1b (provisioning sibling) - sub-agent a6f20db1 (Option A research — no upstream fix) Tests: 37 pytest cases pass (incl. hongming-pc 22:08Z review's 3 design checks: name-collision fail-loud, '/' in name lint, name vs filename fallback).Root cause: DRIFT_BOT_TOKEN lacks repo-admin scope → Gitea 1.22.6's `GET /repos/.../branch_protections/{branch}` returns 403/404 → ApiError → non-zero exit → workflow red. The token trail (internal#329) was never completed for mc-drift-bot on molecule-core. Fix (script): catch ApiError on the protection fetch; on 403/404 log a clear ::error:: diagnostic explaining the token-scope gap and return empty findings (skip this branch). The issue IS the alarm, not a red workflow. 5xx is still propagated (transient outage). Fix (workflow): remove stale transitional comment that claimed the all-required sentinel didn't exist yet (it landed in #553). Fixes: infra/ci-required-drift red on main (210da3b1→4db64bcb). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>Phase 1+2 evidence (rev2 PR#633, merged 01:48Z): 6/6 ticks post-merge with `compensated:0` despite ~25 known-stranded reds visible across those same 10 SHAs on direct probe ~30min later. Reaper run 17057 at 02:46Z explicitly logged: scanned 42 workflows; push-triggered=19, class-O candidates=23 status-reaper summary: {compensated:0, preserved_non_failure:185, scanned_shas:10, limit:10} Root cause: schedule workflows post `failure` to commit-status RETROACTIVELY 5-15 min after their merge. By the time reaper's next */5 tick lands, the stranded red is on a SHA that has already fallen OUTSIDE a 10-commit window during a burst-merge period. Reaper algorithm is correct; the lookback window is too narrow vs. the retroactive-failure-post lag. Three-in-one fix (atomic per hongming-pc2 GO 03:25Z): 1. `.gitea/scripts/status-reaper.py` DEFAULT_SWEEP_LIMIT 10 -> 30. Trades window-width-cheap for cadence-loady; kept `*/5` cron unchanged (avoiding `*/2` which would double runner load). 2. `.gitea/workflows/status-reaper.yml` Restore schedule cron block (revert mc#645 comment-out for THIS workflow only). Cron stays `*/5 * * * *`. 3. `.gitea/workflows/main-red-watchdog.yml` Restore schedule cron block (revert mc#645 comment-out) AND raise job-level `timeout-minutes: 5 -> 15`. Original 5min cap was producing cancels under runner-saturation latency, which fed the very `[main-red]` issues this workflow files (self-poisoning). 4. `tests/test_status_reaper.py` + test_default_sweep_limit_is_30 (contract pin) + test_reap_widened_window_catches_retroactive_failure: mocks 30 SHAs, plants the failing context on SHA[20] (depth strictly past rev2's window=10), asserts the compensation POST lands on that SHA. Existing tests retain explicit `limit=10` overrides and remain unchanged. Suite: 42/42 passed (was 40 + 2 new). Verification plan (post-merge, 10-15 min after merge / 2-3 cron ticks): - DB: SELECT id, status FROM action_run WHERE workflow_id= 'status-reaper.yml' ORDER BY id DESC LIMIT 5 -> all status=1 - Log via web UI: /molecule-ai/molecule-core/actions/runs/<index>/jobs/0/logs -> summary line should now show compensated > 0 with compensated_per_sha populated - Direct probe: pick a SHA in the last 30 main commits with class-O fails, GET /repos/molecule-ai/molecule-core/commits/{sha}/status -> compensated contexts now show state=success with description starting 'Compensated by status-reaper' If rev3 STILL shows compensated:0 after the window-widening, the diagnosis is wrong and a DIFFERENT bug needs to be uncovered (per hongming-pc2 caveat 03:25Z). Re-enabling the crons IS the diagnosis verification. Cross-links: - PR#618 (rev1, drop-concurrency, merge4db64bcb) - PR#633 (rev2, sweep-recent-commits, mergee7965a0f) - PR#645 (interim disable, merge4c54b590) — re-enable being reverted - task #90 (orch rev3 tracker) / task #46 (hongming-pc2 tracker) - feedback_brief_hypothesis_vs_evidence (empirical evidence above) - feedback_strict_root_only_after_class_a (3-in-one root fix vs. longer patching chain) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>go vethard-failing in weekly-platform-go (#567/#612 followup)' (#615) from infra/weekly-platform-go-vet-hard into mainSchema asymmetry in Gitea 1.22.6 combined-status response: - top-level `combined.state` → uses key "state" - per-entry `combined.statuses[i].*` → uses key "status", NOT "state" Pre-rev4 the per-entry loop in reap() (and the matching is_red() / render_body() in main-red-watchdog) read `s.get("state")` only, which returned None on every real Gitea response → state coerced to "" → `"" != "failure"` guard preserved every entry → compensation path unreachable since rev1. Empirical proof (orchestrator probe 2026-05-12 03:42Z): GET /repos/molecule-ai/molecule-core/commits/210da3b1/status → 29 per-entry items, ALL have key "status", ZERO have key "state". status value distribution: {success:18, failure:8, pending:3}. rev3 production run 17516 reported preserved_non_failure=585=30*19.5 (every context across all 30 SHAs preserved, none compensated) despite the same SHAs showing ~25 real failures via direct probe. Fix is one line per call site: s.get("state") → s.get("status") or s.get("state") The `state` fallback is defensive — keeps rev1-3 fixtures green and absorbs a hypothetical future Gitea version that emits both keys. Sibling-script audit: - main-red-watchdog.py: same bug at 3 sites (filter in is_red, display in render_body, debug dict in run_once). Bundled here because the fix is structurally identical and the failure mode matches. - ci-required-drift.py: no per-entry status iteration. Clean. Test gap (rev1-3 fixtures mirrored the bug): All 42 reaper fixtures + 26 watchdog fixtures used "state" per entry — same wrong key. That's why rev1-3 tests stayed green while the production code was no-op. Logged under `feedback_smoke_test_vendor_truth_not_shape_match`. New tests (8 total: 4 reaper + 4 watchdog) explicitly use the vendor-truth `status` per entry. Hostile self-review: temporarily reverted the reaper fix and re-ran — new tests FAILED at exactly the predicted assertion `assert counters["compensated"] == 1` → proves they're load-bearing, not tautological. Cross-links: task #90 (orchestrator), task #46 (hongming-pc2 paired investigation) PR #618 (rev1), PR #633 (rev2), PR #650 (rev3 widened window)Add `.gitea/workflows/lint-required-no-paths.yml` + supporting script and tests that fail a PR if any workflow whose status-check context appears in `branch_protections/main.status_check_contexts` carries a `paths:` or `paths-ignore:` filter in its `on:` block. Why --- A required-check workflow with a paths filter silently degrades the merge gate. If a PR's diff doesn't match the filter, the workflow never fires; Gitea (1.22.6) treats the required context as `pending` (NOT `skipped == success`), so the PR cannot merge. A docs-only PR against `paths: ['**.go']` would be wedged forever — no human action produces a green. Previously this was prevented only by reviewer vigilance + the saved memory `feedback_path_filtered_workflow_cant_be_required`. This commit makes it a structural CI gate. Empirical baseline (verified 2026-05-11 against git.moleculesai.app/molecule-ai/molecule-core/branch_protections/main): status_check_contexts: - "Secret scan / Scan diff for credential-shaped strings (pull_request)" - "sop-tier-check / tier-check (pull_request)" - "CI / all-required (pull_request)" All three workflows (`secret-scan.yml`, `sop-tier-check.yml`, `ci.yml`) have NO paths/paths-ignore filter today. This lint locks that contract: a future PR adding `paths:` to any of them — or to any new required workflow per RFC#324 Step 2 (qa-review, security-review) — fails fast at PR time. How --- - Workflow runs on `pull_request: [opened, synchronize, reopened]` + `workflow_dispatch`. Deliberately NO `paths:` filter on itself — the workflow is self-evidently a meta-required-check. - Reads `branch_protections/main` via `DRIFT_BOT_TOKEN` (same secret ci-required-drift.yml uses — repo-admin scope required for the endpoint per Gitea 1.22.6). - Parses each context `<workflow_name> / <job_name> (<event>)`, walks `.gitea/workflows/*.yml` for a file whose `name:` matches, then YAML-AST-walks the `on:` block for `paths` / `paths-ignore` keys. Behavior-based gate per `feedback_behavior_based_ast_gates` — NOT grep-by-name, so reformatting / event moves still detect. - Token-scope fallback: if `branch_protections` returns 403/404, exits 0 with a loud `::error::` rather than red-X every PR. Token issues should be fixed at the token. Tests ----- 20 tests in `tests/test_lint_required_no_paths.py`, all green: - parse_context (3): standard, slash-in-job-name, malformed - resolve_workflow_file (2): match-by-name, missing - detect_paths_filters (8): clean, paths, paths-ignore, push.paths, both, on-string-shorthand, on-list-shorthand, on-event-null - run() end-to-end (7): empty contexts, clean workflow, paths fails, paths-ignore fails, unknown-context warns-not-fails, multi-required one-bad-one-good, protection-403 skip Live smoke (DRIFT_BOT_TOKEN against molecule-ai/molecule-core/main): all 3 required workflows clean — exit 0. Cross-links ----------- - `feedback_path_filtered_workflow_cant_be_required` (the rule now structurally enforced) - `feedback_behavior_based_ast_gates` (PyYAML AST walk, not grep) - ci-required-drift.yml (precedent for DRIFT_BOT_TOKEN reuse + branch_protections-read scope-fallback pattern) - Charter §SOP-N rule (f): required-checks must run unconditionally Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>Tier-2 hardening per RFC internal#219 §1 + charter §SOP-N rule (m). New CI lint that scans .gitea/workflows/*.yml for six structurally-hostile shapes that Gitea 1.22.6 silently rejects or ambiguously parses, BEFORE they reach main. Rules (4 fatal + 1 fatal cross-file + 1 heuristic-warn): 1. on.workflow_dispatch.inputs — Gitea 1.22.6 mis-parses inputs.X as sibling event types and rejects the entire workflow with [W] ignore invalid workflow ... unknown on type. Memory: feedback_gitea_workflow_dispatch_inputs_unsupported. Origin: 2026-05-11 publish-runtime-v1.0.0 silent freeze, ~24h PyPI lag. 2. on: workflow_run — not enumerated in Gitea 1.22.6 event types (verified via modules/actions/workflows.go; task #81). Workflow registers, fires for zero events. 3. workflow name: containing / — breaks the commit-status convention <workflow> / <job> (<event>) used by sop-tier-check + status-reaper to tokenize context strings. 4. cross-file name: collision — status-routing is by name; collision yields undefined commit-status updates (status-reaper rev1 class). 5. cross-repo uses: org/repo/subpath@ref — DEFAULT_ACTIONS_URL=github resolves to github.com/<org-suspended>/... and 404s. Memory: feedback_gitea_cross_repo_uses_blocked. Cross-link: task #109. 6. (WARN, heuristic) api.github.com refs without workflow-level env.GITHUB_SERVER_URL. Memory: feedback_act_runner_github_server_url. Per halt-condition 3: downgraded to warn-not-fail to avoid the 3 known benign hits on current main (OCI source label + jq-release pin) which use https://github.com/... not https://api.github.com/. Empirical history this hardens against: - status-reaper rev1 caught rule-4 (name-collision) class fail-loud - sop-tier-refire DOA-d on rule-2 (workflow_run partial) - #319 bootstrap-paradox (chained-defect class, related) - internal#329 dispatcher race (adjacent) - 2026-05-11 publish-runtime: rule-1, 24h PyPI freeze on runtime-v1.0.0 publish Triggers: - pull_request — pre-merge gate - push to main/staging — post-merge regression catch even if the PR gate is bypassed by branch-protection drift Per RFC #219 §1 contract: continue-on-error: true on the job during the surface-broken-shapes phase. Follow-up PR flips off after the 3 existing rule-2 violations on main are migrated to a supported trigger. Existing-on-main violations surfaced by this lint (3, informational, NOT auto-fixed per halt-condition 2): - .gitea/workflows/redeploy-tenants-on-main.yml — rule 2 - .gitea/workflows/redeploy-tenants-on-staging.yml — rule 2 - .gitea/workflows/staging-verify.yml — rule 2 All three have on: workflow_run: triggers that will fire for zero events. Fix path: replace with cron or with push+paths:[upstream-yml] gate. Tracked separately (do not block this PR). Tests: tests/test_lint_workflow_yaml.py — 15 pytest cases: - 6 × per-rule violation-detected (rules 1-3,5 + rule 4 cross-file + rule 6 heuristic-warn) - 6 × per-rule clean-passes - 1 × cross-file collision detected - 1 × all-violations-aggregated single file - 1 × empty workflow dir = exit 0 - 1 × vendor-truth: the exact 2026-05-11 publish-runtime YAML shape from feedback_gitea_workflow_dispatch_inputs_unsupported is caught (per feedback_smoke_test_vendor_truth_not_shape_match: fixtures mirror real Gitea 1.22.6 semantics, not yaml-parser quirks) 15/15 tests pass locally. Lint exits 1 against current .gitea/workflows/ because of the 3 existing rule-2 violations above; that is the gate working as intended (and continue-on-error keeps the PR-status soft until the violations are migrated).Blocks PRs that touch `.gitea/workflows/ci.yml` and modify ONLY ONE of {continue-on-error, all-required.sentinel.needs} without a `Paired: #NNN` reference in the PR body or a commit message. The split-pair class this prevents ---------------------------------- PR#665 (interim continue-on-error: true on platform-build) and PR#668 (sentinel-needs demotion of the same job) were designed as a pair but merged solo: #665 landed 04:47Z 2026-05-12, #668 still open at 05:07Z when watchdog #674 fired. ~20 min of main red + a cascade of false-positives. mc#664 was the surfaced incident. Implementation -------------- - `.gitea/scripts/lint_mask_pr_atomicity.py` — reads ci.yml at BASE_SHA and HEAD_SHA via `git show`, parses both via PyYAML AST (per feedback_behavior_based_ast_gates — NOT grep). Predicates: 1. any jobs.*.continue-on-error value diff 2. jobs.all-required.needs set diff (order-insensitive) Both → atomic, OK. Neither → no risk, OK. Exactly one → require `Paired: #NNN` in PR body or `git log base..head`. - `.gitea/workflows/lint-mask-pr-atomicity.yml` — pull_request trigger with paths filter on ci.yml + the lint files. Phase 3 (continue-on-error: true) per RFC #219 §1 ladder; follow-up flip after 3 clean days on main. - `tests/test_lint_mask_pr_atomicity.py` — 9 unit tests covering all prod branches per feedback_branch_count_before_approving: neither predicate, both atomic, coe-only/no-pair fail, needs-only/no-pair fail, coe-only/pair-in-body pass, needs-only/pair-in-commit pass, non-numeric pair rejection, ci.yml unchanged skip, newly-added ci.yml skip. Refs: #350Line 443 of mcp.go concatenated user-controlled req.Method into the JSON-RPC -32601 error message, allowing an agent or canvas client to inject arbitrary strings into the response via the method field. Fix: replace "method not found: " + req.Method with the constant "method not found" — matching the OFFSEC-001 scrub contract applied to the InvalidParams (line 428) and UnknownTool (line 433) paths. Test: extend TestMCPHandler_UnknownMethod_Returns32601 with two new assertions: 1. resp.Error.Message == "method not found" 2. defence-in-depth check that the sent method name never appears in the response (strings.Contains guard) Issue: #684 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>gate-check-v3's --post-comment was 403ing on every run because the workflow had no explicit permissions block. Gitea Actions defaults to contents:read only — insufficient for POST/PATCH on /repos/{owner}/{repo}/issues/{pr}/comments. Add workflow-level permissions: contents: read — checkout base ref pull-requests: write — post/update gate-check comments Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>Daily scheduled lint detecting drift between `branch_protections/<branch>.status_check_contexts` and the contexts emitted by `.gitea/workflows/*.yml`. Files/PATCHes a `[ci-bp-drift]` issue (idempotent) on mismatch. The class this prevents ----------------------- A BP-required context with no emitting workflow blocks merges forever — Gitea 1.22.6 treats absent-as-`pending`, NOT absent-as-`skipped`. Previously surfaced as feedback_phantom_required_check_after_gitea_migration (a port that kept the GitHub context name after rename to Gitea). Implementation -------------- - `.gitea/scripts/lint_bp_context_emit_match.py` — PyYAML walk of every workflow's `on:` block + `jobs.*.name:` (or job-key fallback) to enumerate emitted contexts. Compares against BP. Two directions: (a) BP→emitter: required by BP, no emitter → ERROR + drift issue. (b) Emitter→BP: emitter exists, BP doesn't list → NOTICE only (Tier 2g handles at PR-time; scheduled-flag would noisily flag every transitional state during a BP rollout). Event-suffix match strict: `(push)` and `(pull_request)` are distinct. `pull_request_target` maps to `(pull_request)` per Gitea convention. - `.gitea/workflows/lint-bp-context-emit-match.yml` — schedule `31 3 * * *` + workflow_dispatch. NO pull_request / push triggers (Tier 2g owns those). Phase 3 (continue-on-error: true) per RFC #219 §1. - `tests/test_lint_bp_context_emit_match.py` — 10 unit tests: perfect match, BP-orphan fail, emitter-orphan notice-only, multi-orphan aggregation, empty-BP skip, 403/404 graceful, event-suffix mismatch flag, pull_request_target mapping, idempotent PATCH-on-existing-issue. Auth uses DRIFT_BOT_TOKEN (same as ci-required-drift.yml) — Gitea 1.22.6 requires repo-admin scope on `/branch_protections/*`. Graceful degrade on 403 per Tier 2a contract. Refs: #350Abandon httptest+Hijack — it has two fundamental problems for this use case: 1. Buffered-writer loss: httptest's Hijack() discards the buffered writer, losing any bytes written via w.WriteHeader/w.Write that weren't already flushed to the raw conn. The HTTP client never receives response headers, blocking on ResponseHeaderTimeout=180s (the 2m8s hang). 2. Request-read deadlock: Go's httptest server keeps a read goroutine waiting for the request body after the handler returns. Calling Hijack() while that goroutine is still waiting causes a deadlock with the client's request-body writer. Fix: use raw TCP with net.Listener directly. The server: 1. Accepts one connection. 2. Reads HTTP request headers (blank line terminates). 3. Drains Content-Length bytes from the connection (prevents broken-pipe on client request-body writer when we close). 4. Writes raw HTTP response directly to the raw conn (no buffered writer). 5. Brief sleep so client reads headers+body before FIN fires. 6. Close() sends FIN → client Read() returns io.EOF. Also add allowLoopbackForTest() to each test so the SSRF guard permits 127.0.0.1 mock server URLs (same pattern as a2a_proxy_test.go). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>All previous approaches (plain httptest.Server, raw TCP with io.Copy, httptest+Hijack) produced a consistent 2-minute timeout in CI. Analysis of httptest.Server revealed a subtle goroutine ordering dependency: the server reads the request body into a buffer before calling the handler, but the client's request-body writer goroutine waits for response headers before sending the body. The handler must return (sending headers) before the client's body writer can complete. This creates a potential race where the connection is closed while the client is still writing. The raw TCP approach eliminates all HTTP library goroutines: - net.Listen("tcp", "127.0.0.1:0") binds an ephemeral port - Accept in a goroutine, handle one connection - Read headers using a 2-second deadline (enough for client to send) - Send response immediately, close connection - a2aClient DialContext intercepts all dials and redirects to our port Key insight: set a Read deadline (not ReadAll to EOF) so the server proceeds to send the response without waiting for the body. The kernel discards unread buffered body bytes on close — harmless. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>- Explicitly bind to IPv4 only with net.ListenTCP("tcp4", ...) to avoid IPv6 (::1) vs IPv4 (127.0.0.1) mismatch on macOS where Listen("tcp", "127.0.0.1:0") might bind ::1. - Close the connection immediately after writing the response. If we keep it open, the client's request-body writer goroutine blocks on the socket (waiting for server to drain the body). Closing immediately unblocks it; the client already received the response so the write error is harmless. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>12 passing: loading spinner, empty state, token list rendering, each token's prefix/age/Revoke button, API URL correctness, revoke confirm + cancel dialogs, new-token creation + dismiss, create error, network error banner. Root bug fixed: confirm button search was unscoped — when the dialog opened, two "Revoke" buttons existed (tok2's row + dialog confirm); find() returned tok2's button first. Scoped the search to document.querySelector('[role="dialog"]') to hit the correct target. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>`platform-build` has `continue-on-error: true` as a Phase 3 interim mask while mc#664 handler test failures are in flight. In Gitea, continue-on-error jobs report result="failure" in the needs context (unlike GitHub Actions which reports "success"). This caused the all-required sentinel to hard-fail on every PR. Add PHASE3_MASKED = {"platform-build"} to the sentinel script so platform-build failures are treated as Phase 3 suppressed. Remove this exclusion when mc#664 is resolved and platform-build is healthy. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>0f97cbc2) a77fb3f3d4An A2A agent must always return a JSON body. A 2xx with empty body means the connection closed before body bytes were written — this should route to the failure path, not silently succeed. Without this fix: 200 + empty body → (200, [], nil) → falls through to handleSuccess → marked "completed" despite no payload. With this fix: 200 + empty body → proxyA2AError{Status:200} → isDeliveryConfirmedSuccess=false → isTransientProxyError(200)=false → failure path → "failed" with error detail.The test was asserting that the client-visible error.message equals the descriptive internal reason ("GLOBAL scope is not permitted via the MCP bridge"). After PR#680 and PR#772 enforced the OFFSEC-001 scrub contract across all tool-dispatch failure paths, mcp.go returns the constant "tool call failed" to callers — not the internal detail. Update the test to: - Rename to ..._Blocked_ScrubsInternalError (consistent with CommitMemory) - Assert error.message == "tool call failed" (OFFSEC-001 positive) - Add negative assertions (no internal tokens leak to client) - Use proper json.Unmarshal error check - Merge origin/main (PR#691 lint-required-context-exists-in-bp) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>JSON null unmarshals to []byte("null") (4 bytes), not nil, so len(trace)==0 missed it. Empty array []byte("[]")==2 bytes was also returned unchanged. Add explicit string checks for both cases. Also fix TestExtractToolTrace_ValidNonEmpty: json.Marshal compacts spacing, so byte-exact comparison against spaced literal fails on round-trip. Use compact literal instead. Fixes mc#669 (null tool_trace panic path).mc#765 added `docker-cli` to the workspace-server Alpine runtime, but the Alpine package is just the CLI binary — it does NOT include the buildx plugin. Modern Docker (26.x in this image) defaults BuildKit=on, so `docker build` immediately fails with: local-build: pre-flight OK (docker=/usr/bin/docker) Provisioner: workspace start failed for <id>: local-build mode: ensure image for runtime "claude-code": local-build: docker build molecule-local/workspace-template-claude-code:<sha>: exit status 1: ERROR: BuildKit is enabled but the buildx component is missing or broken. Caught immediately after the mc#765 platform-image deploy + recreate during the sdk-lead (360d42e4-8356-441c-80cf-16fcd5d5ce03) + CP-QA (ec6cf05b-2637-4b3c-b561-b33914849aa2) recovery POST /restart calls. Pre-flight passed (docker CLI present, confirmed by the line above), but the actual `docker build` aborted on buildx-missing. The fix mirrors mc#765's shape: add the matching Alpine package (`docker-cli-buildx`, in community/, verified 0.14.0-r3 on alpine:3.20) to the apk add line in workspace-server/Dockerfile. Diff is +1 word in the apk-add line and a comment block extension that explains the BuildKit/buildx requirement. Related: mc#765 (parent fix), Task #194 / Issue #63 (local-build path).Fixes all ineffassign (7), staticcheck (31), and unused (26) violations reported by golangci-lint in workspace-server/ so the linter gate is clean. Key changes by linter: - ineffassign: remove 7 variables assigned then immediately overwritten - QF1001 (De Morgan): rewrite 4 negated compound conditions - QF1006 (loop lift): 2 for{if break} → for !cond{} - QF1008 (embedded field): drop .Resources. from hostCfg/hc selectors (provisioner + tests) - QF1012 (Fprintf): 3 sb.WriteString(fmt.Sprintf) → fmt.Fprintf - S1009 (nil+len): remove redundant nil check before len() - S1016 (type conv): 2 struct-literal copies → direct type conversion - S1017 (TrimPrefix): 2 if+HasPrefix/slice → strings.TrimPrefix - S1023 (redundant return): remove 2 trailing returns in middleware - SA1012 (nil context): nil → context.TODO() in resolver_test - SA1019 (deprecated): ImageInspectWithRaw → ImageInspect; RetryAfter direct field - SA5011 (nil deref): t.Error → t.Fatal before dereference in client_test - ST1005 (error string): lowercase 3 error strings starting with proper nouns - ST1013 (HTTP constant): 405 literal → http.StatusMethodNotAllowed - unused: delete 26 unused consts/types/funcs/fields across 12 files All three checks pass after this commit: go build ./... → success go vet ./... → success golangci-lint run --timeout 3m ./... → 0 issues Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>LGTM — Release Manager approves v3 sync. Merges 609 main commits into staging.
SRE Review: APPROVE ✅
Staging sync — merges 609 main commits into staging. Verified:
continue-on-erroris removed (hard gate ✅)No infra concerns. Release-manager chore.
Staging moved directly to
e1bf973d— PR base (78259194) is now stale. This PR cannot merge against the current staging. Please rebase onto current staging or close if redundant.Pull request closed