@@ -15,6 +15,7 @@ crabbox warmup --browser
1515crabbox warmup --tailscale
1616crabbox warmup --slug update-flow-smoke
1717crabbox warmup --provider aws --lease-id cbx_abcdef123456 --slug update-flow-smoke
18+ crabbox warmup --provider local-container --lease-id cbx_abcdef123456 --slug update-flow-smoke
1819crabbox warmup --pond alpha --slug db
1920crabbox warmup --provider aws --target windows --desktop
2021crabbox warmup --provider azure --target windows
@@ -50,13 +51,14 @@ Warmup requires an explicit provider selection from `--provider`,
5051recorded lease route. With no selection it exits before provider initialization
5152and points to ` crabbox providers recommend ` .
5253
53- For ` local-container ` , the default ` --keep=true ` also covers SSH readiness
54- failure: once Docker has returned an exact container identity, Crabbox persists
55- a scoped ` provisioning ` claim before inspecting the container or waiting for
56- SSH. Cancellation or timeout retains that pending lease and prints exact
57- inspect, reclaim, and cleanup commands.
58- ` warmup --keep=false ` rolls the container and all per-lease local state back
59- instead.
54+ For ordinary ` local-container ` warmups without ` --lease-id ` , the default
55+ ` --keep=true ` also covers SSH readiness failure: once Docker has returned an
56+ exact container identity, Crabbox persists a scoped ` provisioning ` claim before
57+ inspecting the container or waiting for SSH. Cancellation or timeout retains
58+ that pending lease and prints exact inspect, reclaim, and cleanup commands.
59+ ` warmup --keep=false ` rolls an ordinary container and all per-lease local state
60+ back instead. Fixed-ID local-container warmups retain their durable create
61+ attempt so an interrupted operation can be safely replayed.
6062
6163## Lifetime: TTL and idle timeout
6264
@@ -70,28 +72,29 @@ instead.
7072it and may append a short suffix if an active lease already uses that slug.
7173
7274` --lease-id cbx_<12 lowercase hex> ` is the automation idempotency contract for
73- providers that explicitly support fixed identities. Direct AWS and managed
74- coordinator leases accept it. Replaying the same normalized create intent
75+ providers that explicitly support fixed identities. Direct AWS, Machine0, and
76+ local-container leases, managed coordinator leases, and explicitly capable
77+ external providers accept it. Replaying the same normalized create intent
7578returns or joins the same lease, including after the creating process loses its
7679response. Reusing the ID with a different provider, slug request, SSH key,
77- machine shape, capabilities, lifetime, or other immutable create input fails
78- with ` lease_id_conflict ` before another provider create. Slugs remain display
79- aliases and are never used as the idempotency key.
80+ machine or container shape, capabilities, lifetime, or other immutable create
81+ input fails with ` lease_id_conflict ` before another provider create. Slugs
82+ remain display aliases and are never used as the idempotency key.
8083
8184Coordinator-backed fixed-ID creation uses a versioned ` PUT /v1/leases/<id> `
8285route. An older coordinator therefore rejects the request before provisioning;
8386the CLI never falls back to slug lookup or legacy create behavior. After an
8487ambiguous fixed create response, the CLI repeats that exact PUT to atomically
8588confirm the same intent before it may poll lease status with GET.
8689
87- A fixed lease ID is single-use. If direct AWS acquisition completed and its
88- bound instance later disappears, replay fails closed instead of relying on EC2
89- client-token retention. Successful stop and missing-resource cleanup replace
90- the live local claim with a compact terminal tombstone, so the ID remains
91- rejected after release. Use a new operation ID for every later lease.
92- If an AWS launch attempt was durably recorded but its instance is not yet
93- visible, replay fails closed without resubmitting it; retry later to adopt the
94- resource after provider inventory converges.
90+ A fixed lease ID is single-use. Direct AWS, Machine0, and local-container
91+ acquisitions fail closed if their bound resource later disappears. Successful
92+ stop and missing-resource cleanup replace the live local claim with a compact
93+ terminal tombstone, so the ID remains rejected after release. Use a new
94+ operation ID for every later lease. If an AWS launch or local-container create
95+ attempt was durably recorded but its resource is not yet visible, replay fails
96+ closed without resubmitting it; retry later to adopt the resource after
97+ provider inventory converges.
9598
9699` --pond <name> ` tags a new lease into a named pond (stored as a reserved
97100provider label); ` crabbox list --pond <name> ` filters by it. When combined with
0 commit comments