Refinement Implementation — Cycle 3

Summary

This cycle fixes one publish-safety bug and two contract/FS hardening gaps. Publish now refuses to proceed when unrelated files are already staged on the target branch, settings:update rejects unknown keys instead of silently stripping them, and storm-folder operations now require the configured tropical root to exist as a directory before mutating anything.

Implementation Details

Finding Status Files Changed Notes
C1: Publish on the target branch can commit unrelated pre-staged files Fixed src/shared/types/publish.ts, src/main/services/git/PublishService.ts, tests/main/publishService.test.ts Added a dedicated staged-conflict error path and a regression test for same-branch publishes with unrelated staged paths.
I1: settings:update silently accepts unknown keys and reports success Fixed src/main/ipc/handlers/settingsHandlers.ts, tests/main/settingsHandlers.test.ts Switched merged-config validation to reject unknown keys and added coverage for typoed payload fields.
I2: Storm folder creation recreates a missing tropical root instead of failing fast Fixed src/main/services/storms/StormFolderService.ts, tests/main/stormFolderService.test.ts Added root-directory verification before create/update/sync operations and covered the missing-root create path.

Changes Summary

  • Files modified: 7
  • Files created: 0
  • Findings addressed: 3 of 3
  • Findings skipped: 0 (with reasons above)

IMPLEMENTATION_COMPLETE