Functional Testing — Cycle 1

Date: 2026-04-08 Working directory: C:\Users\keen4\WxManBran\tools\tropical-update-publisher\build_v2\v1\tools\tropical-update-publisher

Summary

Metric Value
Total features 111
Tested this cycle 47
PASS 15
FAIL 3
BLOCKED 28
PARTIAL 1
REGRESSION 0
UNTESTED 28
Health Score 33%
Delta UNTESTED reduced from 75 to 28; raw root tsc --noEmit reduced from 1086 errors to 0 after fixing tsconfig.json

Notes:

  • No screenshots were captured. The renderer never reached a usable app window because both dev and packaged launch paths failed before a stable UI rendered.
  • Phase 0 compile sweep outcome:
    • Initial raw tsc --noEmit: 1086 errors from the umbrella tsconfig.json.
    • Fix applied: narrowed the root tsconfig.json to config-only scope.
    • Current raw tsc --noEmit: PASS.
    • Current npm run typecheck: PASS.
    • npm run build: still FAILS at renderer build.

Detailed FAIL List

CRITICAL — F003 npm run build / npm run build:win Packaging Workflow

  • Break points:
    • node_modules/esbuild/lib/main.js:1978
    • node_modules/app-builder-bin/win/x64/app-builder.exe spawn from node_modules/builder-util/src/util.ts:177
    • package.json:11
    • package.json:14
    • package.json:16
  • What happened:
    • cmd /c npm run build failed during vite build with spawn EPERM.
    • cmd /c npm run build:win failed before packaging with Cannot spawn ... app-builder.exe: spawn EPERM.
  • What should happen:
    • The renderer bundle should build successfully and the Windows NSIS packaging flow should proceed to artifact creation.
  • Evidence:
    • Command output from cmd /c npm run build
    • Command output from cmd /c npm run build:win

CRITICAL — F001 npm run dev Development Launch Path

  • Break points:
    • package.json:9
    • node_modules/concurrently/dist/src/spawn.js:25
    • node_modules/esbuild/lib/main.js:1978
  • What happened:
    • cmd /c npm run dev failed before any usable app window opened.
    • The scripted path died on subprocess spawn, and direct vite execution also failed with spawn EPERM.
  • What should happen:
    • Vite and Electron should both start and the app window should load from the dev server.
  • Evidence:
    • Command output from cmd /c npm run dev

CRITICAL — F002 npm start Packaged-Style Local Launch Path

  • Break points:
    • package.json:17
    • src/main/index.ts:244
    • src/main/index.ts:245
    • src/main/index.ts:246
    • src/main/index.ts:247
  • What happened:
    • cmd /c npm start exited without producing a usable packaged-style window.
    • The renderer bundle is absent, and the main process code path explicitly falls back to about:blank when dist/renderer/index.html is missing.
  • What should happen:
    • The compiled renderer should exist and Electron should open the app window against that built renderer.
  • Evidence:
    • Command output from cmd /c npm start
    • Source trace in src/main/index.ts:244-247

HIGH — F004 npm test, npm run lint, And npm run typecheck Is Only Partial

  • Break points:
    • Lint:
      • src/main/app/crashGuard.ts:151
      • src/main/app/crashGuard.ts:158
      • src/main/app/lifecycle.ts:49
      • src/main/ipc/handlers/docHandlers.ts:24
      • src/main/ipc/handlers/utilityHandlers.ts:28
      • src/main/services/git/GitService.ts:139
      • src/main/services/word/WordDocumentService.ts:41
      • tests/main/fileCopyService.test.ts:39
      • tests/main/fileCopyService.test.ts:70
      • tests/main/pathService.test.ts:15
      • tests/main/singleInstance.test.ts:12
      • tests/renderer/windowApiMock.ts:73
    • Test startup:
      • node_modules/esbuild/lib/main.js:1978
      • vitest.config.ts
  • What happened:
    • npm run typecheck: PASS.
    • npm run lint: FAIL with 14 errors.
    • npm test: FAIL during Vitest startup because Vite/esbuild could not spawn.
  • What should happen:
    • All three repo verification commands should run cleanly without manual intervention.
  • Evidence:
    • Command output from cmd /c npm run typecheck
    • Command output from cmd /c npm run lint
    • Command output from cmd /c npm test

PASS Evidence

  • F007 Windows installer configuration: package.json:72-91 contains appId, productName, win.target = nsis, nsis.oneClick = false, and allowToChangeInstallationDirectory = true.
  • F028 File copy + metadata sidecars: refinement-state/test-fixtures/file-copy-result.json and refinement-state/test-fixtures/file-copy-overwrite-result.json
  • F036 NEW filename validation: refinement-state/test-fixtures/file-validator-result.json
  • F037 legacy filename auto-conversion: refinement-state/test-fixtures/file-validator-result.json
  • F038 display formatting with configurable timezone label: refinement-state/test-fixtures/file-validator-result.json
  • F041 storm folder creation IPC: refinement-state/test-fixtures/storm-folder-result.json and refinement-state/test-fixtures/storm-folder-duplicate-result.json
  • F042 single storm folder rename IPC, including busy-retry helper: refinement-state/test-fixtures/storm-folder-result.json and refinement-state/test-fixtures/storm-folder-retry-result.json
  • F043 bulk storm folder sync IPC: refinement-state/test-fixtures/storm-sync-mixed-result.json
  • F044 storm folder naming rules engine: refinement-state/test-fixtures/storm-folder-rules-result.json
  • F046 quick browse base path lookup: refinement-state/test-fixtures/quick-browse-base-path-result.json and refinement-state/test-fixtures/quick-browse-invalid-base-path-result.json
  • F047 quick browse year listing: refinement-state/test-fixtures/quick-browse-result.json
  • F048 quick browse storm listing: refinement-state/test-fixtures/quick-browse-result.json
  • F049 quick browse storm file listing: refinement-state/test-fixtures/quick-browse-result.json
  • F072 file copy error mapping and batch abort: refinement-state/test-fixtures/file-copy-batch-result.json
  • F079 storm folder validation and rename exhaustion: refinement-state/test-fixtures/storm-folder-errors-result.json and refinement-state/test-fixtures/storm-folder-retry-result.json

Blocked Features

  • F005, F006, F010-F027:
    • BLOCKED by renderer launch failure.
    • npm run dev and npm start never produced a usable UI surface, so main-window, first-run, navigation, publish view, drop zone, and renderer-only behavior could not be exercised as a human user.
  • F029, F073-F077:
    • BLOCKED by Node subprocess denial for git-backed flows.
    • Evidence: refinement-state/test-fixtures/node-spawn-probe.json shows spawnSync git EPERM.
  • F040, F078:
    • BLOCKED by Node subprocess denial for PowerShell/Word COM flows.
    • Evidence: refinement-state/test-fixtures/node-spawn-probe.json shows spawnSync powershell.exe EPERM.

Regressions

  • No confirmed functional regressions beyond the already-blocking launch/build failures.

New Discoveries

  • Probable publish logic defect in branch-switch scenario:
    • src/main/services/git/PublishService.ts:371-448
    • The service stashes a dirty non-target branch before checkout, but only stages requested publish files after switching branches. If the copied .docx exists only on the original branch, it would be stashed away before staging on the target branch.
  • The repo-level tsc --noEmit command was misconfigured by the root tsconfig.json scope and produced 1086 false-scope errors before the compile-sweep fix.
  • The sandbox used for this cycle denies Node child-process execution for git, powershell.exe, cmd.exe, esbuild.exe, and app-builder.exe. That directly blocks renderer build, git publish, and Word COM automation in this environment.

Remaining Untested

  • 28 lower-priority implemented features remain untested after the build/launch triage and the filesystem-only backend/API coverage above.

Verification Results (Post-Fix)

Metric Pre-Fix Post-Fix Delta
PASS 15 21 +6
FAIL 3 3 0
BLOCKED 28 21 -7
PARTIAL 1 2 +1
REGRESSION 0 0 0
Health Score 33% 47% +14 pts

Fixes verified working

  • F003 is partly fixed: npm run build now passes end-to-end and writes fresh renderer/main artifacts (refinement-state/verification-cycle-1-artifacts/npm-run-build.log), while build:win still reaches the external app-builder.exe sandbox limit.
  • F073-F078 were re-verified with fresh targeted tests in refinement-state/verification-cycle-1-artifacts/vitest-git-word.log.
  • Regression checks near modified code stayed green: F007 via refinement-state/verification-cycle-1-artifacts/installer-config-check.json, F036-F038 via refinement-state/verification-cycle-1-artifacts/vitest-regression-sample.log, and F046-F049 via refinement-state/verification-cycle-1-artifacts/vitest-quick-browse-regression.log.

Not resolved

  • F001 still fails before Vite/Electron become usable because concurrently throws spawn EPERM (refinement-state/verification-cycle-1-artifacts/npm-run-dev.log).
  • F002 still exits before a usable packaged window appears; refinement-state/verification-cycle-1-artifacts/npm-start-probe.json recorded exit code 1 with no Electron process snapshot.
  • F004 remains partial: npm run typecheck and npm run lint pass, but the first full npm test run failed once in tests/renderer/shadcn-smoke.test.tsx before the immediate rerun passed.
  • F005 still fails at integrated boot because the packaged launch path never reaches an observable app window, which keeps F006 and F010-F027 blocked for human validation.
  • F029 and F040 remain environment-blocked here because fresh Node probes still return spawnSync git EPERM and spawnSync powershell.exe EPERM.

Regressions introduced

  • No confirmed end-user functional regressions were introduced by the fixes.
  • New verification issue: npm test is currently flaky at full-suite level. refinement-state/verification-cycle-1-artifacts/npm-test.log failed once in the dialog focus-trap case, while refinement-state/verification-cycle-1-artifacts/npm-test-rerun.log passed immediately afterward.

Remaining work

  • Rework the npm run dev process fan-out so it does not depend on the blocked concurrently child-process path in this sandbox.
  • Diagnose why scripts/start-electron.ps1 and the Electron child exit immediately with code 1 under npm start.
  • Re-run npm run build:win on a host that allows app-builder.exe to launch.
  • Stabilize the full-suite tests/renderer/shadcn-smoke.test.tsx dialog focus-trap case so npm test is reliable on first run.

Verification Results (Post-Fix)

Date: 2026-04-08 (re-test pass)

Metric Pre-Fix Post-Fix Delta
PASS 15 22 +7
FAIL 3 2 -1
BLOCKED 28 21 -7
PARTIAL 1 2 +1
REGRESSION 0 0 0
Health Score 33% 49% +16 pts

Fixes verified working

  • F004 is now fully verified in this pass: npm run typecheck, npm run lint, and two consecutive full npm test runs passed (529 tests each) with fresh evidence in refinement-state/verification-cycle-1-retest-artifacts/.
  • F002 improved to PARTIAL: npm start rebuilt renderer/main and launched electron.exe, confirming the direct launcher path is active, but the wrapper still exited 1 before a usable window was observable.
  • F073-F078 were re-verified with fresh targeted tests in refinement-state/verification-cycle-1-retest-artifacts/vitest-git-word.log.
  • Regression checks near modified code stayed green: F007 via refinement-state/verification-cycle-1-retest-artifacts/installer-config-check.json, F036-F038 via refinement-state/verification-cycle-1-retest-artifacts/vitest-regression-sample.log, and F046-F049 via refinement-state/verification-cycle-1-retest-artifacts/vitest-quick-browse-regression.log.

Not resolved

  • F001 still fails before Vite/Electron become usable because concurrently throws spawn EPERM (refinement-state/verification-cycle-1-retest-artifacts/npm-run-dev.log).
  • F003 remains partial: npm run build passes, but npm run build:win still fails at app-builder.exe: spawn EPERM.
  • F005 still fails at integrated boot because the packaged launch path never reaches an observable app window, which keeps F006 and F010-F027 blocked for human validation.
  • F029 and F040 remain environment-blocked here because fresh Node probes still return spawnSync git EPERM and spawnSync powershell.exe EPERM.

Regressions introduced

  • No confirmed end-user functional regressions were introduced by the fixes.
  • The prior full-suite npm test flake did not reproduce in this pass; both consecutive re-runs were green, so no new regression was introduced there.

Remaining work

  • Rework the npm run dev process fan-out so it does not depend on the blocked concurrently child-process path in this sandbox.
  • Diagnose why scripts/start-electron.ps1 launches electron.exe but the process still exits with code 1 before a usable titled window appears.
  • Re-run npm run build:win on a host that allows app-builder.exe to launch.
  • Re-run live git publish and live Word COM creation on a host that allows Node child-process execution for git and powershell.exe.

VERIFICATION_COMPLETE