Skip to content

ci(windows): require crash recovery evidence - #2562

Merged
liugddx merged 7 commits into
apache:mainfrom
liugddx:ci/windows-recovery-gate
Aug 10, 2026
Merged

ci(windows): require crash recovery evidence#2562
liugddx merged 7 commits into
apache:mainfrom
liugddx:ci/windows-recovery-gate

Conversation

@liugddx

Copy link
Copy Markdown
Member

Summary

Add a required windows_recovery job that turns the Windows crash evidence landed across #2475, #2488, #2492, and #2509 into one bounded release gate.

The gate builds on Node 24 and separately verifies SQLite transaction recovery, Runtime resume/continuation recovery, Runtime Host owner-death recovery, and managed-workspace crash convergence. A workflow contract test prevents the job from becoming non-blocking or silently dropping an evidence surface.

Raise only the Windows timeout for the two Runtime crash harnesses from 60 to 120 seconds. The Phase 0 harness serially launches 12 real child processes and exceeded the old aggregate timeout locally; POSIX retains the existing 60-second boundary.

Refs #2142

Verification

ode --test scripts/windows-recovery-workflow.test.mjs (1 pass)

  • Biome check for the changed TypeScript/JavaScript files
  • Parsed .github/workflows/windows-recovery.yml with the repository YAML dependency
  • git diff --check
  • SQLite crash recovery command: 11 pass, 0 fail
  • Runtime continuation Phase 1 passed locally; Phase 0 reached its old explicit 60-second timeout, which this PR raises on Windows
  • Full local rebuild was blocked by the existing installed ypescript@7.0.2 package not exposing the compiler API expected by @maka/code-mode; the clean Node 24 workflow run is authoritative
  • Existing locally built Runtime Host artifacts could not start their fixture Host and the managed-workspace command exceeded the five-minute tool limit; both are rerun from a clean build by the new job

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes - Windows recovery evidence becomes release-blocking.
  • No

@liugddx

Copy link
Copy Markdown
MemberAuthor

Adversarial review follow-up / 对抗性审查后续

EN:

  • Hardened the two name-filtered recovery commands with TAP evidence: Runtime Host must report exactly 2/2 passing with 0 skipped; managed workspace must report exactly 12/12 passing with 0 skipped. A renamed test can no longer make the gate pass with zero matches.
  • Removed the source-code timeout regex test; the real Windows harness is the evidence.
  • Removed duplicate SQLite and managed-workspace crash runs from the non-blocking baseline. The required recovery lane now owns crash evidence; baseline keeps path/lock, PTY, smoke, and nightly full-storage evidence.
  • Windows recovery passed end to end in 3m39s on commit 80c9317.
  • Maintainer check before merge: confirm windows_recovery is required by the repository ruleset (the current token cannot read that setting).

中文:

  • 为两个按名称筛选的恢复命令增加 TAP 精确计数:Runtime Host 必须 2/2 通过且 0 跳过,managed workspace 必须 12/12 通过且 0 跳过,测试改名后不会出现“零匹配假绿”。
  • 删除对源码超时常量的正则快照;真实 Windows crash harness 才是有效证据。
  • 从非阻塞 baseline 删除重复的 SQLite 与 managed-workspace crash 运行,由 blocking recovery lane 统一负责;baseline 继续负责路径/锁、PTY、启动 smoke 与 nightly full-storage。
  • 提交 80c9317 的 Windows recovery 已完整通过,耗时 3 分 39 秒。
  • 合并前请 maintainer 确认仓库 ruleset 已将 windows_recovery 设置为 required check;当前 token 无权读取该配置。

@liugddx
liugddx merged commit 23d0d11 into apache:mainAug 10, 2026
13 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@liugddx