[main-red] molecule-ai/molecule-core: 8186baf902 #2224

Closed
opened 2026-06-04 07:07:13 +00:00 by gitea-actions · 3 comments

Main is RED on molecule-ai/molecule-core at 8186baf902

Commit: https://git.moleculesai.app/molecule-ai/molecule-core/commit/8186baf9026ff0e4dab3afa257eacdb78bb55210

Auto-filed by .gitea/workflows/main-red-watchdog.yml (Option C of the main-never-red directive). Per feedback_no_such_thing_as_flakes + feedback_fix_root_not_symptom: investigate the root cause; do NOT revert as a reflex. The watchdog itself never reverts.

Failed status contexts

  • E2E Staging Canvas (Playwright) / Canvas tabs E2E (push)failurelogs
    • Failing after 3m19s

Resolution path

  1. Read the failed logs (links above).
  2. If reproducible locally, fix forward in a PR targeting main.
  3. If the failure is a real flake — STOP. Per feedback_no_such_thing_as_flakes, intermittent failures are real bugs. Investigate to root cause; do not mark as flake.
  4. If the failure is blocking unrelated work for >1 hour, file a follow-up issue and assign someone. Do NOT revert without a human GO per feedback_prod_apply_needs_hongming_chat_go (branch protection is a prod surface).

Debug

{
  "all_contexts": [
    {
      "context": "ci-arm64-advisory / fast-checks (push)",
      "state": "pending"
    },
    {
      "context": "CI / Canvas Deploy Reminder (push)",
      "state": "pending"
    },
    {
      "context": "CI / all-required (push)",
      "state": "pending"
    },
    {
      "context": "Block internal-flavored paths / Block forbidden paths (push)",
      "state": "success"
    },
    {
      "context": "CI / Python Lint & Test (push)",
      "state": "success"
    },
    {
      "context": "Lint shellcheck (arm64 pilot) / shellcheck-arm64 (pilot) (push)",
      "state": "success"
    },
    {
      "context": "CI / Detect changes (push)",
      "state": "success"
    },
    {
      "context": "E2E API Smoke Test / detect-changes (push)",
      "state": "success"
    },
    {
      "context": "E2E Chat / detect-changes (push)",
      "state": "success"
    },
    {
      "context": "Lint forbidden tenant-env keys / Scan for repo-host token write into tenant workspace surface (push)",
      "state": "success"
    },
    {
      "context": "Lint forbidden tenant-env keys / Scan workspace_secrets writers for forbidden env keys (push)",
      "state": "success"
    },
    {
      "context": "E2E Staging Canvas (Playwright) / detect-changes (push)",
      "state": "success"
    },
    {
      "context": "CI / Canvas (Next.js) (push)",
      "state": "pending"
    },
    {
      "context": "CI / Platform (Go) (push)",
      "state": "success"
    },
    {
      "context": "Secret scan / Scan diff for credential-shaped strings (push)",
      "state": "success"
    },
    {
      "context": "CI / Shellcheck (E2E scripts) (push)",
      "state": "success"
    },
    {
      "context": "E2E API Smoke Test / E2E API Smoke Test (push)",
      "state": "success"
    },
    {
      "context": "Handlers Postgres Integration / detect-changes (push)",
      "state": "success"
    },
    {
      "context": "Harness Replays / detect-changes (push)",
      "state": "success"
    },
    {
      "context": "Harness Replays / Harness Replays (push)",
      "state": "success"
    },
    {
      "context": "Handlers Postgres Integration / Handlers Postgres Integration (push)",
      "state": "success"
    },
    {
      "context": "publish-canvas-image / Build & push canvas image (push)",
      "state": "success"
    },
    {
      "context": "E2E Chat / E2E Chat (push)",
      "state": "success"
    },
    {
      "context": "E2E Staging Canvas (Playwright) / Canvas tabs E2E (push)",
      "state": "failure"
    },
    {
      "context": "publish-workspace-server-image / build-and-push (push)",
      "state": "success"
    },
    {
      "context": "publish-workspace-server-image / Production auto-deploy (push)",
      "state": "pending"
    }
  ],
  "branch": "main",
  "combined_state": "failure",
  "failed_contexts": [
    "E2E Staging Canvas (Playwright) / Canvas tabs E2E (push)"
  ],
  "recheck_combined_state": "failure",
  "recheck_failed_contexts": [
    "E2E Staging Canvas (Playwright) / Canvas tabs E2E (push)"
  ],
  "sha": "8186baf9026ff0e4dab3afa257eacdb78bb55210"
}

This issue is idempotent: the watchdog runs hourly at :05 and edits this body in place. When main returns to green, the watchdog will close this issue automatically with a "main returned to green" comment.

# Main is RED on `molecule-ai/molecule-core` at `8186baf902` Commit: <https://git.moleculesai.app/molecule-ai/molecule-core/commit/8186baf9026ff0e4dab3afa257eacdb78bb55210> Auto-filed by `.gitea/workflows/main-red-watchdog.yml` (Option C of the [main-never-red directive](https://git.moleculesai.app/molecule-ai/molecule-core/issues/420)). Per `feedback_no_such_thing_as_flakes` + `feedback_fix_root_not_symptom`: investigate the root cause; do NOT revert as a reflex. The watchdog itself never reverts. ## Failed status contexts - **E2E Staging Canvas (Playwright) / Canvas tabs E2E (push)** — `failure` → [logs](/molecule-ai/molecule-core/actions/runs/207677/jobs/276736) - Failing after 3m19s ## Resolution path 1. Read the failed logs (links above). 2. If reproducible locally, fix forward in a PR targeting `main`. 3. If the failure is a real flake — STOP. Per `feedback_no_such_thing_as_flakes`, intermittent failures are real bugs. Investigate to root cause; do not mark as flake. 4. If the failure is blocking unrelated work for >1 hour, file a follow-up issue and assign someone. Do NOT revert without a human GO per `feedback_prod_apply_needs_hongming_chat_go` (branch protection is a prod surface). ## Debug ```json { "all_contexts": [ { "context": "ci-arm64-advisory / fast-checks (push)", "state": "pending" }, { "context": "CI / Canvas Deploy Reminder (push)", "state": "pending" }, { "context": "CI / all-required (push)", "state": "pending" }, { "context": "Block internal-flavored paths / Block forbidden paths (push)", "state": "success" }, { "context": "CI / Python Lint & Test (push)", "state": "success" }, { "context": "Lint shellcheck (arm64 pilot) / shellcheck-arm64 (pilot) (push)", "state": "success" }, { "context": "CI / Detect changes (push)", "state": "success" }, { "context": "E2E API Smoke Test / detect-changes (push)", "state": "success" }, { "context": "E2E Chat / detect-changes (push)", "state": "success" }, { "context": "Lint forbidden tenant-env keys / Scan for repo-host token write into tenant workspace surface (push)", "state": "success" }, { "context": "Lint forbidden tenant-env keys / Scan workspace_secrets writers for forbidden env keys (push)", "state": "success" }, { "context": "E2E Staging Canvas (Playwright) / detect-changes (push)", "state": "success" }, { "context": "CI / Canvas (Next.js) (push)", "state": "pending" }, { "context": "CI / Platform (Go) (push)", "state": "success" }, { "context": "Secret scan / Scan diff for credential-shaped strings (push)", "state": "success" }, { "context": "CI / Shellcheck (E2E scripts) (push)", "state": "success" }, { "context": "E2E API Smoke Test / E2E API Smoke Test (push)", "state": "success" }, { "context": "Handlers Postgres Integration / detect-changes (push)", "state": "success" }, { "context": "Harness Replays / detect-changes (push)", "state": "success" }, { "context": "Harness Replays / Harness Replays (push)", "state": "success" }, { "context": "Handlers Postgres Integration / Handlers Postgres Integration (push)", "state": "success" }, { "context": "publish-canvas-image / Build & push canvas image (push)", "state": "success" }, { "context": "E2E Chat / E2E Chat (push)", "state": "success" }, { "context": "E2E Staging Canvas (Playwright) / Canvas tabs E2E (push)", "state": "failure" }, { "context": "publish-workspace-server-image / build-and-push (push)", "state": "success" }, { "context": "publish-workspace-server-image / Production auto-deploy (push)", "state": "pending" } ], "branch": "main", "combined_state": "failure", "failed_contexts": [ "E2E Staging Canvas (Playwright) / Canvas tabs E2E (push)" ], "recheck_combined_state": "failure", "recheck_failed_contexts": [ "E2E Staging Canvas (Playwright) / Canvas tabs E2E (push)" ], "sha": "8186baf9026ff0e4dab3afa257eacdb78bb55210" } ``` _This issue is idempotent: the watchdog runs hourly at `:05` and edits this body in place. When `main` returns to green, the watchdog will close this issue automatically with a "main returned to green" comment._
gitea-actions bot added the tier:high label 2026-06-04 07:07:13 +00:00
Member

MECHANISM: Core main 8186baf9026ff0e4dab3afa257eacdb78bb55210 is red because the required E2E Staging Canvas (Playwright) job fails in Playwright global setup before any canvas tab assertion runs. The workflow runs npx playwright test --config=playwright.staging.config.ts from .gitea/workflows/e2e-staging-canvas.yml:174; that config always invokes canvas/e2e/staging-setup.ts via canvas/playwright.staging.config.ts:32. Setup creates the staging org and tenant successfully, then posts /workspaces with hard-coded runtime: "hermes" and model: "gpt-4o" at canvas/e2e/staging-setup.ts:237-245. The staging workspace API now enforces provider-registry SSOT for runtime/model pairs, so the hermes+bare-gpt-4o combination is rejected with 422 and setup throws at staging-setup.ts:247-248.

EVIDENCE: Failed job 276736 on run 207677 logs tenant creation success at 07:01-07:02Z, then aborts at staging-setup.ts:248 with model "gpt-4o" is not a registered model. There is no Playwright spec failure: teardown deleted e2e-canvas-20260604-bvxc7j, and screenshots were absent because setup failed before tests produced canvas/test-results. Blame shows the hard-coded pair dates to f4700858a in canvas/e2e/staging-setup.ts:240-245, so this is an environment/registry-contract drift surfacing an old harness assumption, not a new canvas tab regression.

RECOMMENDED FIX SHAPE: In molecule-core, update canvas/e2e/staging-setup.ts to select a model slug that is valid for the chosen runtime under the staging provider-registry SSOT, or derive the model from the runtime/template registry instead of hard-coding it. Add a small setup preflight around the workspace-create payload so future registry drift reports the invalid runtime/model pair explicitly before the canvas E2E job is classified as a UI failure.

MECHANISM: Core main `8186baf9026ff0e4dab3afa257eacdb78bb55210` is red because the required `E2E Staging Canvas (Playwright)` job fails in Playwright global setup before any canvas tab assertion runs. The workflow runs `npx playwright test --config=playwright.staging.config.ts` from `.gitea/workflows/e2e-staging-canvas.yml:174`; that config always invokes `canvas/e2e/staging-setup.ts` via `canvas/playwright.staging.config.ts:32`. Setup creates the staging org and tenant successfully, then posts `/workspaces` with hard-coded `runtime: "hermes"` and `model: "gpt-4o"` at `canvas/e2e/staging-setup.ts:237-245`. The staging workspace API now enforces provider-registry SSOT for runtime/model pairs, so the hermes+bare-gpt-4o combination is rejected with 422 and setup throws at `staging-setup.ts:247-248`. EVIDENCE: Failed job `276736` on run `207677` logs tenant creation success at 07:01-07:02Z, then aborts at `staging-setup.ts:248` with `model "gpt-4o" is not a registered model`. There is no Playwright spec failure: teardown deleted `e2e-canvas-20260604-bvxc7j`, and screenshots were absent because setup failed before tests produced `canvas/test-results`. Blame shows the hard-coded pair dates to `f4700858a` in `canvas/e2e/staging-setup.ts:240-245`, so this is an environment/registry-contract drift surfacing an old harness assumption, not a new canvas tab regression. RECOMMENDED FIX SHAPE: In `molecule-core`, update `canvas/e2e/staging-setup.ts` to select a model slug that is valid for the chosen runtime under the staging provider-registry SSOT, or derive the model from the runtime/template registry instead of hard-coding it. Add a small setup preflight around the workspace-create payload so future registry drift reports the invalid runtime/model pair explicitly before the canvas E2E job is classified as a UI failure.
Member

Root cause identified: #2225 (stale hermes/gpt-4o fixture rejected by provider-registry SSOT 422 gate). Fix in PR #2227. The take-control merge (#2216) itself is not regressing — the E2E failure is a pre-existing test-data mismatch that surfaced because the canvas paths filter triggered the real test run.

Root cause identified: #2225 (stale hermes/gpt-4o fixture rejected by provider-registry SSOT 422 gate). Fix in PR #2227. The take-control merge (#2216) itself is not regressing — the E2E failure is a pre-existing test-data mismatch that surfaced because the canvas paths filter triggered the real test run.

main returned to green at SHA 376e6ab89abf384cfaefa47b399d9c70be0ed903 (https://git.moleculesai.app/molecule-ai/molecule-core/commit/376e6ab89abf384cfaefa47b399d9c70be0ed903). Closing automatically. If the underlying root cause is not yet understood, reopen this issue and file a postmortem — green-by-flake is still a bug per feedback_no_such_thing_as_flakes.

`main` returned to green at SHA `376e6ab89abf384cfaefa47b399d9c70be0ed903` (<https://git.moleculesai.app/molecule-ai/molecule-core/commit/376e6ab89abf384cfaefa47b399d9c70be0ed903>). Closing automatically. If the underlying root cause is not yet understood, reopen this issue and file a postmortem — green-by-flake is still a bug per `feedback_no_such_thing_as_flakes`.
gitea-actions bot closed this issue 2026-06-04 08:05:32 +00:00
Sign in to join this conversation.
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: molecule-ai/molecule-core#2224