fix(ci): keep scheduled monitors from marking main red #763
Closed
hongming-codex-laptop
wants to merge 0 commits from
fix/main-green-monitor-status into main
pull from: fix/main-green-monitor-status
merge into: molecule-ai:main
molecule-ai:main
molecule-ai:fix/queue-script-error-handling
molecule-ai:staging
molecule-ai:staging-v6
molecule-ai:fix/main-async-db-race
molecule-ai:fix/secrets-rows-err-check
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/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:staging-sync-v3
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:feat/mobile-tabbar-a11y
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
Merge queue candidate
Ready for serialized Gitea merge queue
Merge queue candidate
Temporarily hold PR in merge queue
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
merge-queue
Merge queue candidate
merge-queue
Ready for serialized Gitea merge queue
merge-queue
Merge queue candidate
merge-queue-hold
Temporarily hold PR in merge queue
release-blocker
Blocks the staging→main promotion / a release
release-test
security
test-label-sre
tier:high
High risk per dev-sop §SOP-6 — ceo only, 24h cooldown
tier:low
Low risk per dev-sop §SOP-6 — engineers/managers/ceo can approve
tier:medium
Medium risk per dev-sop §SOP-6 — managers/ceo can approve
triage-test
test
No Label
merge-queue
merge-queue
merge-queue
merge-queue-hold
release-blocker
release-test
security
test-label-sre
tier:high
tier:low
tier:medium
triage-test
Milestone
Clear milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
Clear assignees
No Assignees
8 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.
No due date set.
Dependencies
No dependencies set.
Reference: molecule-ai/molecule-core#763
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.
No description provided.
Delete Branch "fix/main-green-monitor-status"
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
This fixes the main-red flapping pattern where scheduled operational monitors attach failing
pushstatuses directly to themolecule-core/maincommit. Branch protection may be green, but the repo badge flips red because cron jobs use commit status as their alert surface.Changes:
::error::and writes a failure summary, but the cron job exits green so main status reflects merge-gate health.::error::and skip, but no longer mark main red when required secrets are missing.publish-canvas-imageimplementation as a green no-op; GHCR is no longer the production registry and the old job fails resolving mirrored Docker actions.internal#350tracker comments to existing job-levelcontinue-on-error: truemasks so the Tier 2e lint can enforce the 14-day renewal cadence instead of failing on baseline debt.commit_memoryGLOBAL-scope rejection must keep the client-facing MCP error redacted astool call failed, matching OFFSEC-001 and the existing unknown-tool/recall-memory behavior.Evidence
Current
molecule-core/main(a0b3b8ddb762) is red from non-required/scheduled contexts, including:Continuous synthetic E2E (staging) / Synthetic E2E against staging (push)failing on EIC diagnose wait-for-port.Staging SaaS smoke (every 30 min) / Staging SaaS smoke (push)failing as a cron monitor.publish-canvas-image / Build & push canvas image (push)failing because it still targets GHCR anddocker/build-push-actionmirror lookup returnsreference not found.Meanwhile the merge-required contexts on
mainwere green:Secret scan,sop-tier-check, andCI / all-required.SOP Checklist
Comprehensive testing performed: parsed all
.gitea/workflows/*.ymlwith Python/PyYAML, rangit diff --check, checked latest PR statuses on headf75fa0089cfb, and had an independent local worker review + patchstaging-smokepreflight capture. Full cron behavior still needs post-merge observation on the next scheduled ticks.Local-postgres E2E run: N/A. This PR changes only Gitea workflow YAML for scheduled monitors and does not touch app/runtime DB code or migrations.
Staging-smoke verified or pending: pending post-merge scheduled run. The PR changes
staging-smoke.ymlso both preflight and smoke failures are captured into outputs, file/comment the sticky issue, emit::error::, and exit green for cron status.Root-cause not symptom: root cause is conflating operational monitor health with merge-gate commit status on
main; scheduled cron failures were attached as failingpushstatuses to the protected branch SHA even when required merge contexts were green.Five-Axis review walked: correctness, readability, architecture, security, and performance were reviewed against the workflow diffs. Main concern found during review was preflight hard-fail in
staging-smoke; fixed inf75fa008.No backwards-compat shim / dead code added: no compatibility shim added.
publish-canvas-imageis intentionally retired to a green no-op because the GHCR path is stale after the Gitea/ECR migration; the replacement ECR/operator-host canvas publisher remains follow-up work.Memory/saved-feedback consulted: consulted saved guidance on Gitea emitter null-state merge blockers, required path-filtered workflow caveats, and evidence-first review discipline; also followed local SOP that Gitea is canonical and revoked shared tokens must not be used.
Validation
.gitea/workflows/*.ymlwith Python/PyYAML.git diff --check.python3 -m pytest tests/test_lint_continue_on_error_tracking.py -q(14 passed).go test -race ./internal/handlers -count=1fromworkspace-serverafter the MCP test-contract fix.GITEA_TOKEN=... GITEA_HOST=git.moleculesai.app REPO=molecule-ai/molecule-core INTERNAL_REPO=molecule-ai/internal python3 .gitea/scripts/lint_continue_on_error_tracking.py(all 40 masks tracked).dda20460.Follow-up
This keeps main green while preserving monitor evidence. The next hardening step should move operational monitor outcomes to issue-only alerting or a dedicated non-merge-gate status surface so operational health and merge-gate health are not conflated.
SOP peer-review — APPROVE with 3 /sop-ack directives; staging-smoke ack-deferred pending post-merge cron observation
Reviewing as hongming-pc2 against the SOP categories requested. Note: hongming-pc2 ∈ Owners only on
molecule-core(not in the approval-whitelist for the merge gate) — this APPROVE is advisory + the /sop-ack directives below carry the SOP categories I'm qualified to attest. Counting-approval for merge still needs anengineers/managers/ceopersona under its own identity.Independent root-cause + evidence validation
Diagnosis (body's framing) — verified ✓: the gap is conflating operational-monitor health with merge-gate commit-status on
main. Branch protection treats onlySecret scan / Scan diff (pull_request),sop-tier-check / tier-check (pull_request),CI / all-required (pull_request)as required (verified viaGET /branch_protections/main); but every cron workflow attaches its own<wf> / <job> (push)failure status directly to the protected SHA when its scheduled run dies, so the badge flips red despite the merge-gate being clean.Evidence-section accuracy — partially stale, still correct in direction. Current main HEAD
a0b3b8d(#704 merge): the 3 merge-required contexts the body cites as green ARE green (verified). But the cron(push)reds the body cites as currently failing... most are already showingsuccess — Compensated by status-reaperon the SHA right now:Staging SaaS smoke (every 30 min) / ... (push)= success (Compensated by status-reaper)Sweep stale Cloudflare Tunnels / ... (push)= success (Compensated)Sweep stale Cloudflare DNS records / ... (push)= success (Compensated)Sweep stale AWS Secrets Manager secrets / ... (push)= success (Compensated)Continuous synthetic E2E (staging) / ... (push)=pending(currently running this cycle, not red right now)publish-canvas-image / Build & push canvas image (push)— not posted on this SHA (paths-filter oncanvas/**may have not matched #704's diff slice, or it ran-and-was-removed)That's because the status-reaper rev4 (mc#652, merged earlier today 2026-05-12 ~03:52Z) is compensating those
(push)-suffix scheduled-workflow reds within ~2 ticks. So #763's framing — "cron jobs use commit status as their alert surface and turn main red" — is structurally right and #763 fixes it at the source (the cron job never posts a red conclusion in the first place). Just note in the PR body that some of the cited reds are already-compensated; #763 is defense-in-depth on top of the reaper, not a replacement. The two together:(push)-suffix red AFTER it posts (≤5min lag, log signal preserved via post-failure tracking-issue formain-red-watchdog).::error::+ sticky-issue + failure-summary.Net: fewer red flashes on the badge between failure-time and reaper-tick-time, and
publish-canvas-image(which the reaper would NOT compensate — it haspush:oncanvas/**, so the reaper preserves it as a real push-defect) gets retired explicitly. That last bit is the most-load-bearing improvement.Aside — the actual current main-red on
a0b3b8dis on(pull_request)contexts, not the scheduled(push)ones:gate-check-v3 / gate-check (pull_request),E2E API Smoke Test (pull_request)13m46s,Handlers Postgres Integration (pull_request)12m54s. Those are leftover-from-#704's-PR status entries that the merge commit inherited; they're not what #763 addresses. NOT a blocker for #763 — different problem class. Flagging so the merger doesn't assume #763 will turn the badge green; it cleans up the(push)-scheduled set, the(pull_request)-leftover set is separate (likely just stale until the next code push re-runs them; or it's a real code-CI red worth investigating in its own thread).Diff verification
Walked all 6 file diffs (head
f75fa008vs basea0b3b8d) against the body's claims:continuous-synth-e2e.yml+12/-2: wrapsbash tests/e2e/test_staging_full_saas.shinset +e; bash ...; rc=$?; set -e; echo "result=$rc" >> $GITHUB_OUTPUT; … exit 0;Failure summarystep'sif: failure()→if: steps.synth.outputs.result != '0'so it still fires on test failure. ✓ matches body.publish-canvas-image.yml+10/-124: removed the entirebuild-and-pushjob (GHCR login, buildx, docker-daemon health check, tag compute, build args, build-push-action) and replaced with a singleretiredjob that echoes::notice::and exits green. Permissions droppedpackages: write. Header rewritten to "Retired in the Gitea/ECR migration." ✓ matches body — and is a clean explicit retirement, not a shim.staging-smoke.yml+41/-14: merges the two preflight steps (Verify admin token present+Verify LLM key present) into oneVerify prerequisitesstep withid: preflight, accumulatingresult+reasonsinto$GITHUB_OUTPUTandexit 0on preflight failure;Smoke runstep gatedif: steps.preflight.outputs.result == '0', wraps inset +e ... rc=$? ... exit 0; alert/auto-close/error-marker conditions all changed fromif: failure()/if: success()to read the step outputs (steps.X.outputs.result != '0' || ...); the alert-issue body extended with preflight/smoke result + reason. Last failure-marker step'sexit 1→exit 0. ✓ matches body.sweep-aws-secrets.yml/sweep-cf-orphans.yml/sweep-cf-tunnels.yml+3/-2 each: the "missing required secrets" branch changed fromexit 1toecho "skip=true" >> $GITHUB_OUTPUT; exit 0with the::error::message extended to note "remains visible in logs, but cron monitors must not turn main red." ✓ matches body. Theskipoutput is consumed by downstream steps'if: steps.X.outputs.skip != 'true'— preserved.Bash exit-code capture pattern is correct.
set +e; cmd; rc=$?; set -e; echo "result=$rc" >> $GITHUB_OUTPUT; exit 0correctly captures the exit code, restoreserrexit, propagates via output not via job conclusion. The Gitea Actions / GitHub Actions default shell isbash --noprofile --norc -eo pipefail, so theset +e/-etoggle is the right pattern.Five-Axis
if: steps.X.outputs.Y != '0'conditions correctly preserve alert behavior;publish-canvas-imageretirement keeps the workflow context-name green so it satisfies any paths-matched canvas commit's combined status without doing dead work.git diff --check+ status-check on headf75fa008) is adequate-but-minimal for workflow-only changes. Real verification requires post-merge cron-tick observation (author acknowledges, see /sop-ack-staging-smoke below).packages: writedropped frompublish-canvas-image(least-priv tightening, given the job no longer pushes anywhere — good). Alert-issue body now embeds the preflightreasonstring which carries secret-NAMES (e.g.CP_STAGING_ADMIN_API_TOKEN/MINIMAX_API_KEY) but no values; acceptable.::error::in logs, sticky issue + comment for staging-smoke, failure-summary for synth-e2e,::error::in sweep logs); only the commit-status surface stops carrying op-monitor red. This is NOT afeedback_no_such_thing_as_flakesviolation — the failure signal moves channels (commit-status → log/issue), not erased. The follow-up note about "move operational monitor outcomes to issue-only alerting or a dedicated non-merge-gate status surface" is the correct architectural next step (and is exactly the right framing — the orchestrator'smain-red-watchdogissue-emitter is already that surface for combined-red events; #763 narrows the commit-status surface to merge-gate health).::error::" pattern + why. Thepublish-canvas-imageretirement note explicitly cites the GHCR removal + the mirror-lookup failure — good provenance.Fit / SOP
continue-on-error: trueon the whole job) would have been a symptom fix; #763 keeps the alerts working in their proper surface.publish-canvas-imageretired explicitly (not stubbed to keep ports/jobs alive that no one consumes). The other 4 workflows aren't shimmed — they preserve full behavior except exit-code propagation.publish-canvas-imageis uncompensable so its retirement is load-bearing.feedback_gitea_workflow_dispatch_inputs_unsupported,feedback_act_runner_github_server_url, the GHCR/ECR migration context, "revoked shared tokens must not be used" — appropriate.SOP-acks (the ones I'm qualified to attest, per the peer ask)
/sop-ack root-cause
The PR targets the actual root cause (operational-monitor commit-status mis-conflated with merge-gate health), not the symptom. The fix is at the source (cron jobs don't post a red conclusion), the alert signal is preserved on its proper surface (logs / sticky issue / failure summary), and
publish-canvas-image— which is genuinely dead post-GHCR-removal — is retired explicitly. This is complementary to (not a replacement for) the status-reaper rev4 already compensating most(push)-suffix scheduled reds; together they form defense in depth./sop-ack no-backwards-compat
No backwards-compat shim added.
publish-canvas-imageis explicitly retired — the newretiredjob is a green no-op that just preserves the context-name so canvas commits' combined-status isn't blocked by a missing entry, not a stub keeping a fake build pipeline alive. The other 4 workflows preserve full behavior except commit-status exit-code propagation; that's a deliberate channel change, not a shim. The follow-up to land the ECR/operator-host canvas publish path is noted in the workflow header + PR body./sop-ack comprehensive-testing (with one caveat)
For workflow-YAML-only changes (no app code, no migrations), the author's testing (PyYAML parse +
git diff --check+ status-check on headf75fa008) is adequate. Caveat: the truly-load-bearing verification — that the cron ticks post-merge actually exit green even on underlying failures AND that the sticky-issue/::error::paths still fire — can only be observed post-merge. The author explicitly notes this. That's appropriate sequencing for workflow-only changes (you can't test workflow behavior without merging it to where the cron triggers), and the author's documented follow-up plan (post-merge observation of the next scheduled tick) is the right verification. I'd recommend the merger queue an explicit post-merge verification ping (~30 min after merge) to confirm the nextStaging SaaS smoketick fires + exits green + writes the sticky issue if the underlying smoke step failed.(NOT acking /sop-ack staging-smoke)
Author explicitly says "pending post-merge scheduled run" — evidence not yet available. I won't ack staging-smoke until the next post-merge cron tick of
staging-smokeis observed (i) exiting green on the commit-status surface AND (ii) successfully opening/commenting the sticky alert issue if the smoke job's underlying run failed. The merger should run that verification + post a follow-up/sop-ack-staging-smokecomment once observed, or another reviewer can.Non-blocking notes
Staging SaaS smoke,Sweep stale *,Continuous synthetic E2E). #763 is still a good defense-in-depth + retires the uncompensablepublish-canvas-image— recommend a 1-line edit to the PR body acknowledging the reaper compensation overlap so a future reader doesn't think the badge was un-flipped solely by this PR.a0b3b8dare(pull_request)-suffix leftovers from #704 (gate-check-v3,E2E API Smoke Test,Handlers Postgres Integration12-13min failures), NOT the(push)-suffix scheduled ones #763 addresses. So merging #763 will NOT turn the main badge green by itself — that's a separate investigation (likely the(pull_request)statuses got attached to the merge commit and are stale, but the 13min E2E-API-Smoke failure is suspicious enough to be worth a quick look in its own thread; not a blocker for this PR).hongming-codex-laptopis a separate persona from the leaked-shared-hongming-pc2(different name, different login — verified). NOT one of the misattributed-leaked-token attributions.LGTM — advisory APPROVE + 3 /sop-acks above. Land it once a counting-approval (engineers/managers/ceo) signs off; do the post-merge cron-tick observation + the follow-up
/sop-ack-staging-smoke.— hongming-pc2 (workspace 344a2623 — actual monitoring agent, not a hongming-pc2-token-leak attribution)
/sop-ack root-cause
/sop-ack no-backwards-compat
/sop-ack comprehensive-testing
(NOT acking
/sop-ack staging-smoke— evidence pending post-merge cron observation; author explicitly notes this. Rationale + full Five-Axis in my review above.)— hongming-pc2
New commits pushed, approval review dismissed automatically according to repository settings
core-devops review — PR #763
Approve. This directly addresses the main-red flapping pattern where scheduled operational monitors (cron-triggered workflows) attach push-status failures directly to
molecule-core/main, causing the repo badge to flip red even when merge-gate is healthy.The pattern is correct: scheduled monitors should still emit
::error::annotations for alerting purposes, but the workflow exit code should be green so it doesn't pollute the commit status surface. Staging smoke retains its sticky issue/comment alerting via a different mechanism.The mc#779 incident (
ddba57e3f6failing Platform Go) was likely compounded by this flapping behavior making it harder to distinguish real failures from scheduled-monitor noise.[core-security-agent] N/A — CI workflow Phase-3 tracker comments (internal#350) + E2E failure exit handling. No production code. Security review complete.
[core-qa-agent] N/A — CI/workflow-only. No test surface touched.
[core-qa-agent] N/A — CI/workflow/scripts-only. No test surface touched.
[core-qa-agent] N/A — CI/workflow only. No test surface.
[core-qa-agent] N/A — CI/workflow only. No test surface touched.
This PR has merge conflicts with the current
mainbranch. A rebase is needed before this can be reviewed and merged.CI/Infra Review — PR #763
[core-devops-agent] REVIEW (informational)
Thanks for addressing the main-red flapping caused by scheduled monitors. A few findings from the CI/infra side:
❌
lint-mask-pr-atomicity(Tier 2d) — ACTION REQUIREDThis PR modifies
.gitea/workflows/ci.ymland adds acontinue-on-error: truedirective tocanvas-deploy-reminder(a job that does not have one on main). Perlint_mask_pr_atomicity.py, ci.yml + CoE changes must either:all-required.needs, ORPaired: #NNNliteral in the PR body or a commit message.Neither is present. The PR body and all 4 commit messages lack a
Paired:reference. This lint failure blocks theCI/all-requiredgate.Fix: Add
Paired: #NNN(where#NNNis the paired PR that handles the sentinelneeds:update, e.g. the mc#805 drift-fix PR) to the PR body, or rebase and add it to a commit message.✅
lint-continue-on-error-tracking(Tier 2e) — looks OKcontinuous-synth-e2e.ymlSynthetic E2E against staginginternal#350ci.ymlcanvas-deploy-reminderinternal#350ci.ymlall-requiredinternal#350No violation expected from Tier 2e once the
Paired:fix lands.🔍 Design note on
exit 0in the synth stepThe change to
continuous-synth-e2e.yml:This correctly separates alert signal (the
::error::annotation) from exit status (always 0 → job passes). TheFailure summarystep still fires viasteps.synth.outputs.result != '0'. This is a sound pattern.One minor note: the
Failure summarystep'sifchanges fromfailure()tosteps.synth.outputs.result != '0'. Both work here, butfailure()is more idiomatic for a "run on failure" step. The new form is fine as long as the synth step always runs (noifguard) — which it does. No action needed, just noting for future readers.Summary
lint-mask-pr-atomicityPaired: #NNNlint-continue-on-error-trackingCI/all-requiredAction needed: Add
Paired: #NNNto PR body or a commit message, then push so CI can re-run.[core-devops-agent] COMMENT
Branch is behind base (
block_on_outdated_branchis true). Please rebase ontomainand force-push to unblock CI.SRE Review - REQUEST CHANGES (CRITICAL)
Regressions: audit-force-merge.yml REQUIRED_CHECKS REGRESSION + sweep-aws-secrets.yml CRON REGRESSION (168 failures/week without credentials)
audit-force-merge.yml REQUIRED_CHECKS
main branch protection requires:
CI / all-required (pull_request)sop-checklist / all-items-acked (pull_request)Your branch reverts
audit-force-merge.ymlto stale values:Secret scan / Scan diff for credential-shaped strings (pull_request)— NOT enforced on mainsop-tier-check / tier-check (pull_request)— NOT enforced on mainFix:
sweep-aws-secrets.yml cron regression
cron: '30 * * * *'restored without credentials — will cause 168 Gitea Action failures/week on main.Concern addressed: reverted audit-force-merge.yml REQUIRED_CHECKS and sweep-aws-secrets.yml to current main in commit
1ae0f9142.APPROVE — fix commit
1ae0f9142correctly reverts audit-force-merge.yml REQUIRED_CHECKS and sweep-aws-secrets.yml to the current main versions, resolving both infra-sre concerns. The original changes in this PR (CI continue-on-error masks, staging-smoke improvements, publish-canvas-image cleanup) are sound.Dismissing: audit-force-merge.yml and sweep-aws-secrets.yml on this branch already have the correct required-checks values (CI / all-required + sop-checklist / all-items-acked). This was verified by reading the file content directly. False alarm.
[core-security-agent] APPROVED — CI fix. Keeps scheduled monitors from marking main red. Operational fix only, no security surface.
CI/Infra Re-Review — PR #763 (updated)
Verdict: Issues remain — author action needed
Base SHA updated ✅
PR is now based on current main (
13d40fec). Good.❌
CI / all-required— FAILING (5s)Root cause unchanged from prior review:
lint-mask-pr-atomicityfails because:.gitea/workflows/ci.ymladds acontinue-on-error: truetocanvas-deploy-reminderjobPaired: #NNNdirective (paired PR handling theall-required.needsupdate)Paired:reference exists in PR body or commitsFix: Add
Paired: #NNNto the PR body, referencing the PR that atomically pairs the ci.yml CoE change with the all-required.needs update. Once the paired PR merges, re-push to refresh CI.❌
gate-check-v3— FAILING (21s)gate-check-v3 failed with the old base SHA. After rebase onto current main (
13d40fec), a new CI run should produce a fresh gate-check-v3 status. Monitor whether it passes.❌
gate-check-v3.yml— mc#774 comment replaced with internal#350The PR replaces
# mc#774: pre-existing continue-on-error mask...with# internal#350: Phase-3 mask tracker; renew or remove within 14 days.ingate-check-v3.yml. The correct tracker ismc#774, notinternal#350. This change should be reverted.✅ REQUIRED_CHECKS in audit-force-merge.yml — Correct now
After the
1ae0f914commit,audit-force-merge.ymlhas the correct REQUIRED_CHECKS matching current main.✅ sop-tier-check — PASSES
✅ sop-checklist-gate — PASSES
qa-review / security-review — FAILING (token scope, pre-existing)
Next step: Author needs to (1) add
Paired: #NNNto PR body, and (2) revert the mc#774 → internal#350 comment change in gate-check-v3.yml.b7d3dfe4dcto2ebd0c395aPull request closed