Functional Testing — Cycle 2

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 75
PASS 73
FAIL 0
BLOCKED 0
PARTIAL 2
REGRESSION 0
UNTESTED 0
Health Score 99%
Delta +50 pts vs. Cycle 1 verification re-test; PASS 22 → 73, BLOCKED 21 → 0, UNTESTED 28 → 0

Notes:

  • Phase 0 compile sweep:
    • npm run build: PASS (refinement-state/functional-cycle-2-artifacts/npm-run-build-final.log)
    • npx tsc --noEmit: PASS via npm run typecheck (refinement-state/functional-cycle-2-artifacts/npm-run-typecheck-final.log)
    • pytest: command unavailable in this shell, but no *.py files or requirements*.txt exist in this tool directory, so no Python compile/test surface was applicable.
    • Compile errors found: 0
  • Repository verification commands:
    • npm run lint: PASS (refinement-state/functional-cycle-2-artifacts/npm-run-lint-final.log)
    • npm test: PASS on three consecutive full runs after stabilizing the dialog smoke test (refinement-state/functional-cycle-2-artifacts/npm-test-final-rerun-1.log, npm-test-final-rerun-2.log, npm-test-final-rerun-3.log)
  • Live GUI evidence:
    • First-run gate renders and saves config: refinement-state/screenshots/cycle-2/interactive-first-run-before.png, refinement-state/screenshots/cycle-2/interactive-after-continue.png
    • Dev shell renders after fixes: refinement-state/functional-cycle-2-artifacts/npm-run-dev-after-optimize-fix.png
  • Git tests used disposable branch test-functional-verification. Branch created, tested, and deleted. Config restored to original. Evidence: refinement-state/test-fixtures/cycle-2/publish-e2e-result.json

Detailed FAIL List

No current FAIL entries remain after Cycle 2 fixes.

Partial Features

MEDIUM — F053 Config Load, Save, Atomic Write, And Migration

  • Status: PARTIAL
  • What works:
    • Default config load/save validation, atomic temp-file write, schema validation, and settings round-trips are covered by the passing test suite.
  • What is still missing:
    • A real on-disk migration-chain run was not exercised outside test doubles in this cycle.
  • Evidence:
    • refinement-state/functional-cycle-2-artifacts/npm-test-final-rerun-3.log

LOW — F083 First-Run Accessibility Baseline

  • Status: PARTIAL
  • What works:
    • The first-run window is keyboard reachable; the happy-path Continue flow succeeded through a keyboard-driven interaction and saved config.
  • What is still missing:
    • Invalid-path alert/announcement behavior was not re-driven manually in the live window during this cycle.
  • Evidence:
    • refinement-state/screenshots/cycle-2/interactive-first-run-before.png
    • refinement-state/screenshots/cycle-2/interactive-after-continue.png
    • refinement-state/functional-cycle-2-artifacts/npm-test-final-rerun-3.log

Blocked Features

No implemented features remain blocked in this environment.

Regressions

No confirmed functional regressions remain.

New Discoveries And Fixes

  • Fixed renderer bootstrap/runtime compatibility:
    • src/renderer/main.tsx no longer trips the react-dom/client named-export failure in Electron/Vite.
  • Fixed compiled-app path resolution:
    • src/main/services/paths/PathService.ts, src/main/window/createMainWindow.ts, and src/main/index.ts now normalize dist/main/main entrypoints back to the tool root, which restored the renderer HTML path, preload path, and repo/incoming-path defaults.
  • Fixed dev-only Vite dependency boot:
    • vite.config.ts now prebundles react, react-dom, and react-dom/client, eliminating the require is not defined blank-window failure in npm run dev.
  • Fixed live git publish on non-target branches:
    • src/main/services/git/PublishService.ts now preserves queued files across the stash/checkout/pull boundary before staging on the target branch.
    • Verified in a real temporary repo + bare remote fixture with both direct-target and stash/restore publish cases.
  • Stabilized the flaky dialog smoke test:
    • tests/renderer/shadcn-smoke.test.tsx now opens the sample dialog deterministically in the focus-trap case.
  • Added direct evidence for previously stale untested surfaces:
    • tests/renderer/publishPlaceholder.test.tsx
    • tests/main/publishHistoryService.test.ts
    • tests/main/writeAuditLine.test.ts

Remaining Missing Features

These remain implementation gaps rather than test blockers:

  • F008-F009 launch-wrapper/assets requirements
  • F030-F035 full publish queue/upload UI
  • F039 document-creator renderer section
  • F045 quick-browse renderer section
  • F050 spec header/logo/git-status widget
  • F069-F070 unresolved onboarding/paths IPC gaps
  • F087-F090 command palette, shortcuts, context menus, designed empty states
  • F093-F111 Phase 2 monitor/AI/email/dashboard/history/notification/compliance work

Evidence Highlights

  • Dev launch: refinement-state/functional-cycle-2-artifacts/npm-run-dev-after-optimize-fix.json, refinement-state/functional-cycle-2-artifacts/npm-run-dev-after-optimize-fix.png
  • Packaged-style launch + first run: refinement-state/functional-cycle-2-artifacts/npm-start-after-path-fix.json, refinement-state/screenshots/cycle-2/interactive-first-run-before.png, refinement-state/screenshots/cycle-2/interactive-after-continue.png
  • Build and installer: refinement-state/functional-cycle-2-artifacts/npm-run-build-final.log, refinement-state/functional-cycle-2-artifacts/npm-run-build-win-final.log
  • Full repo verification: refinement-state/functional-cycle-2-artifacts/npm-run-typecheck-final.log, refinement-state/functional-cycle-2-artifacts/npm-run-lint-final.log, refinement-state/functional-cycle-2-artifacts/npm-test-final-rerun-1.log, refinement-state/functional-cycle-2-artifacts/npm-test-final-rerun-2.log, refinement-state/functional-cycle-2-artifacts/npm-test-final-rerun-3.log
  • Git publish E2E with disposable branch cleanup: refinement-state/test-fixtures/cycle-2/publish-e2e-result.json
  • Word COM creation + Electron shell handoff: refinement-state/test-fixtures/cycle-2/word-create-result.json, refinement-state/test-fixtures/cycle-2/word-create-electron-result.json