Configuration
Synchronize discovered packages, migrate legacy fields, and manage named release channels without rewriting unrelated policy.
smif config groups maintenance operations for .changes/config.toml.
smif config sync
smif config migrate
smif config channel set|clearSynchronize the workspace
Start with a read-only check:
smif config sync --checksync runs package discovery and compares it with [packages]. It reports additions, missing packages, renames, moves, and conflicts while preserving comments and intentional fields. Remove --check to apply an unambiguous plan.
Use --resolver rust --resolver nodejs to limit discovery. --prune removes configured packages missing from a complete successful scan; it is intentionally unavailable when a partial scan or conflict makes deletion unsafe.
Migrate from v0.2.x
smif config migrate --check
smif config migrateSemifold reads and migrates v0.2.x configuration before strict project loading. It can replace legacy version-mode, normalize known snake_case keys, and add the required typed pre-check discriminator while preserving unrelated TOML and comments. --check returns a non-zero status when a migration is needed and never writes the file.
When another command cannot load TOML configuration under the current contract, it displays the underlying parse or validation error in full before suggesting smif config migrate. If migration also fails, the problem is outside the supported legacy-field conversions and must be corrected from that error. This command does not migrate JSON configuration or repair file permissions.
Set or clear a release channel
smif config channel set beta --package web --bump minor
smif config channel clear --package webset accepts a named channel and either repeatable --package values or --all. The optional one-time --bump preserve|patch|minor|major controls the stable baseline used when entering the channel; a successful version consumes it. clear restores the default stable channel. Both operations support --check.
For Node.js packages, Semifold warns when the configured npm publish command lacks the matching --tag; it reports the policy mismatch without rewriting the command.
--check versus --dry-run
--check answers whether persisted configuration already matches the requested state and is designed for CI drift detection. --dry-run previews an operation. Neither writes configuration, but their success criteria are different.