Skip to content

E2E Robustness Epic: 7-criterion tracker (cron-managed) #5266

Description

@vivekchand

E2E Robustness Tracking Issue

Managed by the E2E Robustness Driver cron (fires every 2h). Each fire picks the single highest-leverage gap and ships one PR. This issue tracks criterion status and per-fire log entries. Do not close manually -- the cron closes it only when all 7 criteria are green for 7 consecutive days.


7 Criteria

# Criterion Status Notes
C1 OSS golden path (wheel + OpenClaw + 9 tabs, <5 min) GREEN oss-golden-path.yml + test_e2e_oss_golden_path.py -- required in e2e_gate.py. Latest main run #8908 (2026-09-12T20:23Z) SUCCESS. Active day: PRs #5918 (email sign-in token fix), #5919 (CI unbreak/revert dep bump) merged. Gate continues blocking PR #5684 auth regression.
C2 Cloud golden path (signup + daemon + /cloud/* tabs, <8 min) GREEN e2e.yml + test_cloud_golden_path.py covers /cloud, sibling routes, /cloud/node/, daemon connect+sync, API nodes check. Latest run #3620 (2026-09-12T19:24Z) SUCCESS. Cloud PRs #2423 (node removal billing fix), #2421 (Resend UA guard now CI gate), #2422 (traction board to /admin/traction) merged.
C3 Landing golden path (hero + signup + OTP, <3 min) GREEN landing-golden-path.yml runs test_landing_golden_path.py + test_public_claims_truth.py on every landing PR. Latest main run #983 (2026-09-12T18:42Z) SUCCESS. PRs #806/#807/#808 (traction gated/retired, Why+Book Demo in nav) merged.
C4 Cross-repo handoff (landing -> cloud -> daemon -> first sync, <10 min) GREEN cross-repo-handoff.yml + test_e2e_cross_repo_handoff.py. PR #5269 merged: T4 uses real AES-256-GCM; T5 verifies roundtrip and wrong-key rejection.
C5 Visual-diff covers ALL tabs post-auth GREEN OSS: pr-screenshots.yml with 33 tabs. Cloud: PR #2143 merged 2026-08-28 -- test_cloud_node_all_tab_screenshots (11 tabs in /cloud/node/) + artifact upload live on every e2e.yml run. Gateway-token injection bug (2026-05-17 user report) confirmed fixed and covered.
C6 Required-status-checks on all 3 repos AMBER apply-required-checks.yml exists in all 3 repos. Sole remaining blocker. Human action required: add required checks via GitHub Settings UI (no PAT, no code, ~2 min per repo). Check names below.
C7 Failure quarantine within 24h GREEN auto-quarantine.yml + quarantine-sweep.yml exist. Flaky tests marked in tests/quarantine.txt.

C6 action -- the ONLY remaining gap

No code work left. C6 is purely a GitHub admin settings action. Two paths:

Path A: GitHub Settings UI (no PAT, no code, ~2 min per repo)

For each repo, go to: Settings > Branches > Edit "main" > "Require status checks to pass before merging" > search and add:

  • vivekchand/clawmetry -- add: E2E Gate (required)
  • vivekchand/clawmetry-cloud -- add: Cloud golden-path browser E2E
  • vivekchand/clawmetry-landing -- add: Landing golden path (C3)

Path B: One-shot Actions workflow (fine-grained PAT)

For each repo, go to Actions > apply-required-checks.yml > Run workflow:

  • confirm field: APPLY
  • pat_token field: paste a fine-grained PAT with Administration: read+write scope for that repo

Run once per repo. The workflow self-validates and reports what it added.


What is currently implemented (OSS)

  • oss-golden-path.yml: C1 (9 tabs) + C5 (33-tab sweep) + OTLP smoke. Required in e2e_gate.py.
  • pr-screenshots.yml: Visual diff on every PR touching dashboard.py/routes//static/. Proper gateway token propagation with localStorage injection + overlay wait. All 33 canonical tabs.
  • .github/scripts/visual-diff.mjs: Token injection, 5s overlay wait, auth-gap detection (exit 3), continues to screenshot after auth failures for diagnostics.
  • tests/test_e2e_oss_all_tabs.py: 33-tab C5 post-auth sweep with class-scoped fixture (1 page load for all tabs). Drift tests verify CANONICAL_TABS stays in sync with template files, PR_SCREENSHOT_TABS, and DEFAULT_TABS.
  • tests/test_e2e_oss_golden_path.py: Full C1 golden path (auth, data, tab overlay, render, attention API).
  • tests/test_e2e_otlp_ingest.py: OTLP trace ingest smoke.
  • cross-repo-handoff.yml: C4 gate, required in e2e_gate.py.
  • tests/test_e2e_cross_repo_handoff.py: T1-T5 tiers. PR C4: real AES-256-GCM in stub-mode cross-repo handoff (T4 wire fidelity + T5 roundtrip) #5269 merged: T4 uses real AES-256-GCM; T5 verifies roundtrip and wrong-key rejection.
  • scripts/e2e_gate.py: 11 required check specs including drift-bot.
  • e2e-gate.yml: Single aggregated required check ("E2E Gate (required)").
  • auto-quarantine.yml + quarantine-sweep.yml: C7 flakiness quarantine.

What is currently implemented (cloud)

  • e2e.yml: Runs test_cloud_golden_path.py -- C2 full coverage (10 tests). Job name: "Cloud golden-path browser E2E".
  • test_cloud_node_all_tab_screenshots: Screenshots 11 OSS tabs inside /cloud/node/ post-auth. Artifact uploaded on every run. Merged 2026-08-28 (PR fix(snapshot): derive spending from dailyUsage so hero card matches Cost tab (#2142) #2143).
  • cloud_route_policy/policy.py: Classifies GET /api/usage/outcomes as oss-passthrough. Merged 2026-08-28.
  • cloud-e2e-screenshots.yml: Post-deploy + PR screenshots via install.sh against prod. Non-blocking.
  • c6-pr-gate.yml: Posts PR comment if "Cloud golden-path browser E2E" is not a required check on main. Fails each PR until C6 is closed.
  • apply-required-checks.yml: One-shot workflow to add required checks -- paste PAT into Actions UI (no secret setup required).

What is currently implemented (landing)

  • landing-golden-path.yml: C3 -- runs test_landing_golden_path.py + test_public_claims_truth.py. Job name: "Landing golden path (C3)".
  • c6-pr-gate.yml: Merged in PR [RELEASE] fix: Cloud Pro price $5/node/month (was $19) #678 (2026-08-28). Posts @vivekchand comment on every landing PR when "Landing golden path (C3)" is not a required check on main.
  • apply-required-checks.yml: One-shot workflow to add required checks -- paste PAT into Actions UI (no secret setup required).

Per-fire log

2026-08-26T22:30Z -- Fire 1 (first run)

  • Created this tracking issue (predecessor E2E Robustness Epic: 7-criterion automated testing tracker (active) #4552 was closed prematurely).
  • Full status audit across all workflows. Findings:
    • C1 + C5 (OSS): GREEN. Gateway-token visual-diff bug confirmed FIXED in current code. 33-tab sweep running as hard gate via oss-golden-path.yml.
    • C2 (Cloud): RED. No cloud golden path E2E workflow found. Issue [regression] GET /fleet/ -- FAIL_STATUS got 302 expected 200 #5236 shows /fleet/ returning 302.
    • C4: AMBER. Runs with stubs when CLOUD_REPO_PAT missing. Functional but not full-fidelity on fork PRs.
    • C7: GREEN. Quarantine infrastructure in place.
  • Next fire: target C2 -- build cloud-golden-path.yml in vivekchand/clawmetry-cloud.

2026-08-27T00:00Z -- Fire 2

  • Full re-audit. Findings:
    • C2: Tracking issue had STALE RED status. e2e.yml + test_cloud_golden_path.py exist in clawmetry-cloud and cover all C2 sub-criteria (10 tests including daemon connect+sync and /cloud/node/ deep-link). /fleet/ 302-to-/cloud is intentional UX consolidation (chore: bump to v0.12.157 [skip ci] #840), not a regression. C2 updated to GREEN.
    • C5 (cloud): Only remaining RED half. OSS has 33-tab visual-diff per PR. Cloud /cloud/node/ had zero screenshot coverage.
    • C6: Still AMBER. Both cloud and landing apply-required-checks.yml exist but need admin PAT to execute.
  • Gap targeted: C5 cloud -- opened PR vivekchand/clawmetry-cloud#2143.
    • Adds test_cloud_node_all_tab_screenshots to test_cloud_golden_path.py: screenshots 11 OSS tabs inside /cloud/node/ post-auth.
    • Adds artifact upload step to e2e.yml: cloud-node-tab-screenshots- on every run.
  • Next fire: C6 enforcement.

2026-08-27T01:40Z -- Fire 3

2026-08-27T03:40Z -- Fire 4

  • Gap targeted: C6 visibility on clawmetry-landing -- landing had no c6-pr-gate.yml.
  • Fix shipped: opened PR vivekchand/clawmetry-landing#678 (c6-pr-gate.yml). Fires on every landing PR, audits required checks, posts @vivekchand comment with remediation steps when missing.

2026-08-27T05:40Z -- Fire 5

  • Gap targeted: C4 stub fidelity -- _InlineDaemonSim was sending base64(b"stub-encrypted-payload"), a non-AES-GCM blob. T4 passed in stub mode even when the wire format was completely wrong.
  • Fix shipped: opened PR C4: real AES-256-GCM in stub-mode cross-repo handoff (T4 wire fidelity + T5 roundtrip) #5269.
    • _InlineDaemonSim now sends real AES-256-GCM blobs matching sync.py:encrypt_payload wire format.
    • Inline cloud stub validates blob structure, rejects invalid blobs with clear error.
    • New T5: encryption roundtrip without any server.

2026-08-27T07:40Z -- Fire 6

  • Status audit: all code done. Three PRs CI-green awaiting human merge only.
  • No new code gap found. Investigated administration:write for GITHUB_TOKEN -- confirmed NOT a valid permission (causes workflow rejection). PAT approach already optimal.
  • Notified user with full action plan (merge 3 PRs, add required checks via Settings UI or apply-required-checks.yml).

2026-08-28T03:37Z -- Fire 6 (merge event)

2026-08-28T09:30Z -- Fire 7

  • PR C4: real AES-256-GCM in stub-mode cross-repo handoff (T4 wire fidelity + T5 roundtrip) #5269 merged (C4 real AES-GCM, 2026-08-28T03:37Z). C4 updated to GREEN.
  • PR [RELEASE] fix: Cloud Pro price $5/node/month (was $19) #678 merged (C3/C6 landing c6-pr-gate, 2026-08-28T03:37Z). C3 updated to GREEN.
  • Current status: 6/7 GREEN. Only C6 (required-status-checks) remains AMBER.
  • C6 has zero code work remaining. It is a pure admin action: add required checks in GitHub Settings UI (no code, no PAT) on all 3 repos. Check names: clawmetry=E2E Gate (required), clawmetry-cloud=Cloud golden-path browser E2E, clawmetry-landing=Landing golden path (C3). Alternatively, run apply-required-checks.yml with a fine-grained PAT (Administration read+write) pasted into the Actions UI.
  • No PR to open this fire. Next fires will audit C6 status and notify until the admin action is taken.

2026-08-28 through 2026-09-09 -- Fires 8-17

  • All fires: status audit confirms 6/7 GREEN. C6 AMBER unchanged.
  • No code work remains. C6 requires GitHub admin action only.
  • All three golden paths confirmed GREEN on every check.

2026-09-10T -- Fire 18

2026-09-10T10:40Z -- Fire 19

2026-09-10T12:40Z -- Fire 20

  • Status audit: 6/7 GREEN. No regressions detected.
    • C1 OSS: main run #8389 (2026-09-10T10:19Z) SUCCESS (last confirmed)
    • C2 Cloud, C3 Landing, C4, C5, C7: GREEN, no new failures.
  • C6: AMBER. 20th consecutive fire with no change. All code infrastructure is complete and working. C6 is blocked solely on a ~6-minute GitHub Settings UI action (Path A above -- no code, no PAT, no terminal).
  • No PR opened. The cron has zero code-deliverable work remaining.
  • Gate is proving its value: PR feat(ingest): open the front door — ingest key, generated contract, setup prompt, live status #5684 caught a real auth regression before merge.
  • Next fire will audit again; no change expected until C6 admin action is taken.

2026-09-10T14:42Z -- Fire 21

  • Status audit: 6/7 GREEN. No regressions.
  • C6: AMBER. 21st consecutive fire. No change. The sole blocker is the ~6-minute GitHub Settings UI admin action (Path A above). No code work is possible.
  • No PR opened. The cron has no code-deliverable work remaining.
  • Active development is healthy: 2 PRs merged to main since last fire, both passed golden-path gates correctly.

2026-09-11T00:30Z -- Fire 22

  • Status audit: 6/7 GREEN on main. No regressions on main since last fire.
    • C1 OSS: run #8413 (2026-09-10T13:54Z) SUCCESS on main. Additional PR runs confirm C1 healthy: run #8451 (feat/build-your-own-ui, SUCCESS), run #8453 (i18n-docs, SUCCESS).
    • C2 Cloud, C3 Landing, C4, C5, C7: GREEN.
  • Gate demonstrating continued value on open PRs:
  • C6: AMBER. 22nd consecutive fire. No change. Sole blocker remains the ~6-minute GitHub Settings UI action (Path A above).
  • No PR opened. Zero code-deliverable gaps remain.

2026-09-11T16:30Z -- Fire 23

2026-09-11T18:30Z -- Fire 24

2026-09-12T -- Fire 25

  • Status audit: 6/7 GREEN. No regressions. Audit confirmed C1-C5 and C7 infrastructure intact.
  • C6: AMBER. 25th consecutive fire. No change since fire 7 (2026-08-28). The sole blocker is a ~6-minute human admin task in GitHub Settings UI (Path A above). No code can close C6.
  • No PR opened. Zero code-deliverable gaps remain. The cron has been blocked on C6 for 15+ days.
  • Recommendation: The cron has exhausted all automated work it can deliver. Please either (a) take the C6 admin action (~6 min, Path A above) to reach 7/7 and the stop condition, or (b) disable this trigger via https://claude.ai/code/scheduled. The cron will keep firing and logging the same status every 2 hours until one of those two happens.

2026-09-12T14:00Z -- Fire 26

2026-09-12T20:30Z -- Fire 27

2026-09-13T06:50Z -- Fire 28


This issue is managed by the E2E Robustness Driver cron. Last updated: 2026-09-13T06:50Z.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions