From 8166dbc40a249b8b74c9b8e7c51236012ca54e42 Mon Sep 17 00:00:00 2001 From: "linh.doan" Date: Wed, 9 Sep 2026 16:50:51 +0700 Subject: [PATCH] fix(ci): exclude app-build from the Node-toolchain gate + drop QF1008 embedded selector MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two CI-Go legs have been red on main since the Tauri app (#267) and TUI polish (#268) landed: 1. Single-implementation gate: app-build.yml legitimately invokes pnpm (Tauri 2 webview UI, issue #181 / PRD §20.4 decision) — the gate's Go-only rule covers the DevAgent core, so exclude that one workflow's lines from the grep instead of weakening the gate itself. 2. staticcheck QF1008: polish_contract_test.go:323 used the embedded bufEnv selector; winchEnv promotes cols, so env.cols is identical. The TestApplyKeysApproveSheet CI-only failure (passes locally 30+ runs on the same SHA) is filed separately with full analysis. --- .github/workflows/ci-go.yml | 6 +++++- internal/tui/polish_contract_test.go | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-go.yml b/.github/workflows/ci-go.yml index 69c2507..b5fe097 100644 --- a/.github/workflows/ci-go.yml +++ b/.github/workflows/ci-go.yml @@ -84,7 +84,11 @@ jobs: done # Workflows must not invoke the Node toolchain (npm/npx/tsx/node). - if grep -rnE '(npm|npx|tsx|node) ' .github/workflows/*.yml; then + # Exception: app-build.yml drives the Tauri 2 webview UI (#181, + # FR-UI-01..09) — the Go single-implementation rule covers the + # DevAgent core; the app's UI stack is TS by the §20.4 decision. + if grep -rnE '(npm|npx|tsx|node) ' .github/workflows/*.yml \ + | grep -v '^\.github/workflows/app-build\.yml:'; then fail "Node toolchain invocation found in .github/workflows — CI runs the Go suite only (issues #205, #250)" fi diff --git a/internal/tui/polish_contract_test.go b/internal/tui/polish_contract_test.go index 68fa3ae..519db0e 100644 --- a/internal/tui/polish_contract_test.go +++ b/internal/tui/polish_contract_test.go @@ -320,7 +320,7 @@ func TestLoopRunSigwinchRepaintsPromptly(t *testing.T) { // Resize: narrower geometry, then fire SIGWINCH. drawLocked re-probes // Size and full-clears (the sanctioned reflow clear). - env.bufEnv.cols = 60 + env.cols = 60 env.winch <- os.Interrupt // any signal value wakes the repaint runWaitFor(t, func() bool { return strings.Contains(env.buf.String(), "\x1b[2J")