openclaw - ✅(Solved) Fix QA-lab extension test fails on current main: aborts in-flight runner model catalog [2 pull requests, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#70659Fetched 2026-04-24 05:55:04
View on GitHub
Comments
0
Participants
1
Timeline
2
Reactions
0
Participants
Timeline (top)
cross-referenced ×2

Current main reproduces the QA-lab extension failure seen on PR #66293 after the PR was refreshed. The failure is outside PR #66293's five-file consumer/QC overlay.

Error Message

FAIL |extension-qa| extensions/qa-lab/src/lab-server.test.ts > qa-lab server > aborts an in-flight runner model catalog when the lab stops Error: file did not appear: ...\runner-catalog-stopped.txt at waitForFile extensions/qa-lab/src/lab-server.test.ts:194:9 at extensions/qa-lab/src/lab-server.test.ts:591:12

Root Cause

PR #66293 does not touch extensions/qa-lab/src/lab-server.test.ts, the extension QA vitest config, or the extension batch runner. This appears to be a current-main QA-lab extension test issue, not a defect caused by the five-file handoff-contract overlay.

Fix Action

Fixed

PR fix notes

PR #66293: [codex] Align openclaw with shared handoff contract

Description (problem / solution / changelog)

Intent / Scope

<!-- prh:single-intent -->
  • Single intent: align openclaw with the shared Codex handoff contract as a consumer-only compatibility overlay.
<!-- prh:out-of-scope -->
  • Out of scope: any runtime enforcement engine, unrelated dependency work in openclaw/openclaw#60168, JobApp or Middleman work, and any repo-local fork of the shared contract.

Files / Subsystems Expected to Change

<!-- prh:expected-paths -->
  • Expected paths: AGENTS.md, README.md, package.json, test/qc-alignment.test.mjs, and test/codex-handoff-contract.test.mjs.
<!-- prh:hotspot-scope-note -->
  • Hotspot scope note: this PR stays narrow to the repo-local consumer overlay and QC compatibility checks; it does not add prompt rendering or a second enforcement stack.

Ownership

<!-- prh:primary-owner -->
  • Primary owner: @BananaAccurate
<!-- prh:review-routing -->
  • Review routing: openclaw maintainers reviewing the consumer/QC overlay only. Review the canonical shared contract first in Intrepid-Analytica/Shared-Repo-Resources#8 and AI-Staff runtime enforcement context in Intrepid-Analytica/AI-Staff#42.

Stacked PR

<!-- prh:is-stacked -->
  • Is this stacked?: no
<!-- prh:prerequisite-pr -->
  • Prerequisite PR: Intrepid-Analytica/Shared-Repo-Resources#8 is review context only; this PR targets main directly.
<!-- prh:stack-order-note -->
  • Stack order note: review after #8 so the consumer overlay is evaluated against the settled shared contract.

Docs / Workflow / Policy Files

<!-- prh:docs-included -->
  • Intentionally included?: yes
<!-- prh:docs-why -->
  • Why: this consumer-only package intentionally updates AGENTS/README guidance, package test wiring, and QC alignment coverage to stay synced with the shared handoff contract.

Supersession / Replacement

<!-- prh:supersedes -->
  • Supersedes / replaces: none
<!-- prh:review-context -->
  • Review context to preserve: none

Validation

<!-- prh:local-validation -->
  • Local validation performed: node test/qc-alignment.test.mjs; node test/codex-handoff-contract.test.mjs

Operational Closeout

<!-- prh:operational-closeout -->
  • Requires operational closeout after merge?: no
<!-- prh:operational-evidence -->
  • Post-merge evidence / verification path: none
<!-- prh:rollback-plan -->
  • Rollback / recovery path: revert this isolated consumer/QC overlay commit if the shared contract changes or the upstream landing needs to be backed out.

Review Topology

  • This is the real upstream-capable consumer/QC PR for openclaw/openclaw.
  • No runtime enforcement engine is added here.
  • Ignore openclaw/openclaw#60168; it is an unrelated Dependabot dependency PR and not part of this rollout.

Changed files

  • AGENTS.md (modified, +12/-0)
  • README.md (modified, +9/-0)
  • package.json (modified, +2/-0)
  • test/codex-handoff-contract.test.mjs (added, +48/-0)
  • test/qc-alignment.test.mjs (added, +53/-0)

PR #70669: [codex] Fix QA-lab abort catalog lifecycle test

Description (problem / solution / changelog)

Summary

Fixes #70659.

This is a separate unblock lane for the current-main QA-lab extension failure that was blocking unrelated PR checks. It is intentionally separate from #66293 and does not alter that five-file handoff-contract overlay.

Root cause

The QA-lab abort-catalog test treated marker file existence as equivalent to complete marker content. Under CI, the test could observe the marker immediately after writeFileSync created/truncated it but before the expected content was visible, producing an empty read. On Windows, SIGTERM cleanup handlers are also not a reliable process-termination oracle.

Fix

  • Wait for complete marker content that proves OPENCLAW_CODEX_DISCOVERY_LIVE=0 was propagated.
  • Record the spawned catalog process pid and verify that lab.stop() terminates it.
  • Preserve the graceful SIGTERM cleanup assertion on non-Windows platforms.

Validation

  • node scripts/run-vitest.mjs run --config test/vitest/vitest.extension-qa.config.ts extensions/qa-lab/src/lab-server.test.ts failed on baseline, then passed 3/3 after the fix.
  • npm exec --yes [email protected] -- exec oxfmt --check extensions/qa-lab/src/lab-server.test.ts
  • node scripts/run-oxlint.mjs --tsconfig tsconfig.oxlint.extensions.json extensions/qa-lab/src/lab-server.test.ts
  • npm exec --yes [email protected] -- tsgo:extensions:test

Note: local Windows pnpm test:extensions:batch -- qa-lab still hits pre-existing Windows path/symlink expectations outside this patch; the Linux PR CI extension shard is the relevant aggregate validation for #70659.

Changed files

  • extensions/qa-lab/src/lab-server.test.ts (modified, +93/-7)

Code Example

npm exec --yes pnpm@10.33.0 -- install --frozen-lockfile

---

node scripts/run-vitest.mjs run --config test/vitest/vitest.extension-qa.config.ts extensions/qa-lab/src/lab-server.test.ts

---

FAIL |extension-qa| extensions/qa-lab/src/lab-server.test.ts > qa-lab server > aborts an in-flight runner model catalog when the lab stops
Error: file did not appear: ...\runner-catalog-stopped.txt
at waitForFile extensions/qa-lab/src/lab-server.test.ts:194:9
at extensions/qa-lab/src/lab-server.test.ts:591:12
RAW_BUFFERClick to expand / collapse

Summary

Current main reproduces the QA-lab extension failure seen on PR #66293 after the PR was refreshed. The failure is outside PR #66293's five-file consumer/QC overlay.

Current-main proof

  • Repo/base: openclaw/openclaw main
  • Commit tested: fda09c4806cc261e00337926f1aa5e7f37d2f1f7
  • PR reference: #66293 at 72e1987cd14c2037721fb4905909cbb7c1d01f77
  • PR changed files only: AGENTS.md, README.md, package.json, test/codex-handoff-contract.test.mjs, test/qc-alignment.test.mjs
  • The failing file and extension QA runner/config are identical between PR #66293 and current main.

CI failure

Focused local current-main reproduction

Setup:

npm exec --yes [email protected] -- install --frozen-lockfile

Focused command, run from current main:

node scripts/run-vitest.mjs run --config test/vitest/vitest.extension-qa.config.ts extensions/qa-lab/src/lab-server.test.ts

Result: failed 3/3 attempts on current main.

Observed local failure:

FAIL |extension-qa| extensions/qa-lab/src/lab-server.test.ts > qa-lab server > aborts an in-flight runner model catalog when the lab stops
Error: file did not appear: ...\runner-catalog-stopped.txt
at waitForFile extensions/qa-lab/src/lab-server.test.ts:194:9
at extensions/qa-lab/src/lab-server.test.ts:591:12

Local environment note: this control was run on Windows with local Node v25.9.0, while the PR CI job runs Linux Node 24.x; both hit the same test/locus, though the exact assertion text differs.

Relationship to PR #66293

PR #66293 does not touch extensions/qa-lab/src/lab-server.test.ts, the extension QA vitest config, or the extension batch runner. This appears to be a current-main QA-lab extension test issue, not a defect caused by the five-file handoff-contract overlay.

extent analysis

TL;DR

The issue can be fixed by investigating and resolving the discrepancy in the lab-server.test.ts test, specifically the waitForFile function that expects the runner-catalog-stopped.txt file to appear.

Guidance

  • Investigate the waitForFile function in lab-server.test.ts to understand why the runner-catalog-stopped.txt file is not being created as expected.
  • Verify that the test environment and setup are correctly configured to produce the expected file.
  • Check for any differences in the test behavior between Windows and Linux environments, as the test fails on both but with slightly different error messages.
  • Review the changes in the main branch since the last successful run of the test to identify any potential causes of the failure.

Example

No code example is provided as the issue is more related to the test environment and setup rather than a specific code snippet.

Notes

The issue seems to be related to the test environment and setup rather than a specific code change in PR #66293. The fact that the test fails on both Windows and Linux environments suggests that the issue is not platform-specific.

Recommendation

Apply a workaround by modifying the lab-server.test.ts test to correctly handle the expected file creation, or investigate and fix the underlying issue causing the file not to be created. The reason for this recommendation is that the issue appears to be a test environment or setup problem rather than a code defect introduced by PR #66293.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING