v1.0.0-rc.4
Pre-release
Pre-release
·
6 commits
to main
since this release
Features
- Discovering an estate now authenticates against the destination Spacelift account before touching the source, so an invalid Spacelift credential is caught immediately instead of only surfacing later. The destination account's VCS integrations are now recorded and reported alongside the migrated estate.
- Discovering an estate now also records the destination account's worker pools, and the migration is now failed outright with a clear error if the account has no worker available to run anything on.
- Stacks and modules are now matched to a specific destination VCS integration automatically, or via an explicit setting when more than one integration could serve the same repository. A repository that can't be matched to any integration is now flagged as an error.
- Generated stacks and modules now name their bound VCS integration explicitly rather than relying on the account's default, and repositories that aren't tied to any VCS integration ("raw git") are now fully supported. A raw-git repository missing its URL is now flagged as an error.
- Stacks that use a custom workflow tool instead of Spacelift's built-in runner now generate as runnable: a runner image and a shared workflow definition are generated and attached automatically, instead of producing a stack with no way to actually execute.
- Policies and policy sets are now discovered and reported as needing manual attention, since they can't be automatically translated and have to be hand-rewritten on the Spacelift side.
- Run tasks are now discovered and reported as needing manual attention, since the external integration behind them has to be reconnected by hand.
- Private registry providers are now discovered and generated as real, migratable resources. Published provider versions still can't be captured, so the generated output and the migration report both call out that versions need to be re-published through your own pipeline.
- A new opt-in capability can recover secret values that were masked because they came from a shared variable set rather than a single workspace. It works through a disposable, throwaway workspace that is always cleaned up afterward, and is kept separate from ordinary secret capture so enabling one doesn't silently start doing the other.
- When more than one source-mutating capability is allowed in the same run, they now execute one at a time instead of concurrently, avoiding contention over the same account's resources.
- The most recently applied plan or apply log can now be replayed on demand, without re-running anything — useful when the original output has scrolled out of view.
- Commands that change the source system, or that apply a plan, now require an explicit approval from a person before proceeding. An AI agent driving the CLI can no longer approve its own mutation or apply step; it's refused and told which approval command a person needs to run instead.
- An AI agent driving discovery or a source-mutating run must now first read the relevant guidance and supply proof of having done so before the command will proceed. This has no effect when the CLI is run directly by a person.
Fixes
- Discovering an estate no longer records a live agent-pool count that fluctuates independently of the estate itself, so repeated discovery of an unchanged estate now produces stable, unchanging results.
- The choice between the open-source and custom Terraform workflow tool is now computed correctly for every form of version constraint (ranges, exclusive bounds, shorthand notation), fixing cases where a workspace could previously be generated with the wrong tool.
- Forcing generation of a stack with no VCS repository now produces a stack that can actually be planned, with clear placeholder values for the missing repository and branch, instead of an empty and invalid configuration.
- The guidance shown after a source-mutating run now lists the remaining steps in the correct order, and a migration can no longer be marked fully finished while it still holds captured secrets or state that haven't been pushed — that step now refuses to run until they are. Items skipped during that step are now listed individually along with the reason each was skipped.
- Piped, agent-facing output no longer fails outright when a result contains control characters (for example, from a captured, colorized plan) — they're stripped instead of causing the whole command to error.
- A run that successfully captures secrets now shows up with its captured and skipped counts in the summary, instead of that capability's result being silently absent from the report.
Security Updates
- Setting an unrelated configuration value no longer rewrites secret values into the configuration file in plaintext; secret references are now left untouched.
- Captured secret values are now matched by both their origin and their name, fixing a case where a Terraform variable and an environment variable sharing the same name could have the wrong value written back to one of them.
- Added guidance on securely disposing of the local working directory once a migration is verified, since it holds captured secret values and infrastructure state unencrypted on disk for the duration of the migration.