diff --git a/.github/workflows/daily-windows-terminal-integration-builder.lock.yml b/.github/workflows/daily-windows-terminal-integration-builder.lock.yml index f50f2336017..a9011c682ea 100644 --- a/.github/workflows/daily-windows-terminal-integration-builder.lock.yml +++ b/.github/workflows/daily-windows-terminal-integration-builder.lock.yml @@ -1,4 +1,4 @@ -# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"4f75e4831dc14511eef55291db11576f49e5de6d2aafb0cb54c00455650293e2","body_hash":"c25cc4e1dd8259c50f2f3768c3fe32d59dd19f3df5743135d9a693a1a6719034","strict":true,"agent_id":"copilot","engine_versions":{"copilot":"1.0.60"}} +# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"4f75e4831dc14511eef55291db11576f49e5de6d2aafb0cb54c00455650293e2","body_hash":"c5f7443a1ee51644b7a0f5e066fa5990afd02143e4a93fc5081203929fea43ae","strict":true,"agent_id":"copilot","engine_versions":{"copilot":"1.0.60"}} # gh-aw-manifest: {"version":1,"secrets":["COPILOT_GITHUB_TOKEN","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GITHUB_TOKEN"],"actions":[{"repo":"actions/checkout","sha":"df4cb1c069e1874edd31b4311f1884172cec0e10","version":"v6.0.3"},{"repo":"actions/download-artifact","sha":"3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c","version":"v8.0.1"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/setup-node","sha":"48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e","version":"v6.4.0"},{"repo":"actions/upload-artifact","sha":"043fb46d1a93c77aae656e7c1c64a875d1fc6a0a","version":"v7.0.1"}],"containers":[{"image":"ghcr.io/github/gh-aw-firewall/agent:0.25.68"},{"image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.25.68"},{"image":"ghcr.io/github/gh-aw-firewall/cli-proxy:0.25.68"},{"image":"ghcr.io/github/gh-aw-firewall/squid:0.25.68"},{"image":"ghcr.io/github/gh-aw-mcpg:v0.3.25","digest":"sha256:c10331ad17668ef89f38f5e356678788a40b0cd5fef96e8f92e1d9c1de47cbaa","pinned_image":"ghcr.io/github/gh-aw-mcpg:v0.3.25@sha256:c10331ad17668ef89f38f5e356678788a40b0cd5fef96e8f92e1d9c1de47cbaa"},{"image":"ghcr.io/github/github-mcp-server:v1.1.2","digest":"sha256:30197479d8036c7811892bc07e06f9a05c9ef3cdd79bc59f256d50647f95788c","pinned_image":"ghcr.io/github/github-mcp-server:v1.1.2@sha256:30197479d8036c7811892bc07e06f9a05c9ef3cdd79bc59f256d50647f95788c"},{"image":"node:lts-alpine","digest":"sha256:2bdb65ed1dab192432bc31c95f94155ca5ad7fc1392fb7eb7526ab682fa5bf14","pinned_image":"node:lts-alpine@sha256:2bdb65ed1dab192432bc31c95f94155ca5ad7fc1392fb7eb7526ab682fa5bf14"}]} # ___ _ _ # / _ \ | | (_) diff --git a/.github/workflows/daily-windows-terminal-integration-builder.md b/.github/workflows/daily-windows-terminal-integration-builder.md index bd6426b3789..4e3c8f76762 100644 --- a/.github/workflows/daily-windows-terminal-integration-builder.md +++ b/.github/workflows/daily-windows-terminal-integration-builder.md @@ -41,8 +41,18 @@ If it is missing, create it. If it exists, improve it only when needed to match - Build job must run on `ubuntu-latest` and compile the Windows CLI binary (`gh-aw.exe`), then upload it as an artifact. - Integration test job must run on `windows-latest`, download the artifact, and run integration checks across several CLI commands, including help output. - Integration tests must cover weird-but-popular Windows terminal setup combinations (for example `pwsh`, Windows PowerShell, and `cmd` execution paths) to catch shell-specific integration regressions. +- Treat scenario coverage as a systematic matrix (shell x launch mode x environment shape x path style) instead of ad-hoc spot checks. +- Include chaos-style terminal/environment scenarios that mirror common Windows developer habits: + - no-profile shells (`pwsh -NoProfile`, `powershell -NoProfile`) and default profile shells + - PATH order and PATH shadowing quirks (workspace-first, toolcache-first, duplicate entries) + - PATHEXT and extension resolution behavior for `.exe` invocation from different shells + - paths with spaces/parentheses and mixed slash styles (`C:\\path with spaces\\...` and `/` vs `\\`) + - unicode and non-ASCII working directories/user-profile-like paths + - environment toggles commonly used by developers (`NO_COLOR`, `TERM`, `CI`, and empty/minimal env subsets) + - command invocation variants (`gh-aw.exe help`, `gh-aw.exe --help`, subcommand help, and unknown-command failure paths) - Integration test commands must defend against Windows hangs by using timeouts and clearly surfacing timeout failures. - Include explicit checks for Windows-specific integration issues, especially command hanging behavior. +- Include at least one negative/chaos case that intentionally stresses terminal behavior and verifies failure is explicit, fast, and debuggable. - Add a final `conclusion` job that runs with `if: always()`, aggregates prior job outcomes, and determines overall success/failure. - If any required job fails, the conclusion job must create a GitHub issue describing failed jobs and linking the run.