Skip to content

migration: refuse running-store binds and ambiguous legacy retries - #45

Open
aikins01 wants to merge 1 commit into
devfrom
migration/refuse-unsafe-store-binds
Open

aikins01 wants to merge 1 commit into
devfrom
migration/refuse-unsafe-store-binds

Conversation

@aikins01

Copy link
Copy Markdown
Owner

A data store migrated with recreate or managed keeps its source container running. If that store writes to a bind mount, the target would mount the same host paths while the source still writes them. Live apply now refuses those plans before it touches the target, and status points at moving the store's data to a named volume instead of suggesting the strategy that caused the refusal. Read-only binds and stores using migrate are unaffected. The refusal also applies when resuming an older run with this layout, because the remaining steps would still run the target against the shared paths. Rollback and source cleanup have no push step, so they are not blocked.

Resuming a legacy run whose first project creation started or failed without a known outcome now fails closed as writer-authority ambiguous, since Bort cannot tell whether a target project exists. A creation explicitly rejected without mutation still takes the fresh-retry path from #44.

The migration guide documents the refusal and adds recovery guidance for preserved bind mounts: remove every target container mounting the shared paths before restarting the source, and keep future target deployments from mounting them again.

A data store migrated with recreate or managed keeps its source
container running, so a writable bind mount it owns would be written by
the source and the target at the same time. Live apply now refuses such
plans before any target mutation, and status points at moving the data
to a named volume instead of suggesting the strategy that triggered the
refusal.

Resuming a legacy run whose first project creation has no known outcome
now fails closed as writer-authority ambiguous. A creation explicitly
rejected without mutation still retries under the current plan.

The migration guide documents the refusal and how to recover preserved
bind mounts before restarting the source.
@aikins01 aikins01 self-assigned this Oct 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant