B2 Lifecycle control
- Area
- B — Running it
- Audience
- operator
- Kind
- feature
- Status
- accepted
- Maturity
- building
- Labels
- cli
- Requires
- G7
The feature in the specification · Read at
Requirements
Starting MUST wait for health, not merely for the container to run, before reporting success.
Per-service progress MUST be shown during start.
- locked by
- 0.8.0 met
- recorded done
- lemonfibercrates/lemonfiber-core/src/app/engine/streaming.rs
- cited by
- lemonfiber@c687d8ece5
Every operation MUST list the services it will affect before acting.
- locked by
- 0.8.0 met
- recorded done
- lemonfibercrates/lemonfiber/src/render/stack.rs
- cited by
- lemonfiber@8a091a4a3clemonfiber@e3fb72e649
Operations MUST be addressable to a form, a service list, or everything.
- locked by
- 0.8.0 met
- recorded done
- lemonfibercrates/lemonfiber-core/src/stack/closure.rs
- cited by
- lemonfiber@4f823e25a9lemonfiber@53d9c26943
Operations MUST be idempotent, and a no-op MUST report as such rather than erroring.
- locked by
- 0.8.0 met
- recorded done
- lemonfibercrates/lemonfiber-core/src/app.rscrates/lemonfiber/src/render/stack.rs
- cited by
- lemonfiber@75f03dfd95
Stopping MUST stop the VPN last where a download client depends on its network namespace.
- locked by
- 0.8.0 met
- recorded done
- lemonfibercrates/lemonfiber-core/src/docker.rs
- cited by
- lemonfiber@3cb1d11baa
Stopping a service still required by another active form MUST be refused, naming that form.
- locked by
- 0.8.0 met
- recorded done
- lemonfibercrates/lemonfiber-core/src/stack/standing.rs
- cited by
- lemonfiber@f02f55a6c7lemonfiber@bf2d42f1fd
A service that fails to become healthy MUST time out within a bounded period and MUST surface its recent logs.
Crash-looping MUST be reported distinctly from starting.
Status MUST distinguish at minimum: absent, stopped, starting, healthy, unhealthy, crash-looping, failed.
- locked by
- 0.8.0 met
- recorded done
- lemonfibercrates/lemonfiber-core/src/app/engine.rscrates/lemonfiber-core/src/docker.rscrates/lemonfiber-core/src/app/engine/halted.rs
- recorded partial
- lemonfiber-companionapp-modules/kernel/tests/Api/HowAServiceRunsTest.php
- cited by
- lemonfiber@93e398e530lemonfiber@fb11824654
--dry-run MUST print the exact underlying command without executing it.
Missing images MUST be pulled with visible progress rather than producing an error.
- locked by
- 0.8.0 met
- recorded done
- lemonfibercrates/lemonfiber-core/src/app/engine/streaming.rs
- cited by
- lemonfiber@c687d8ece5
Stopping with active downloads MUST report them and offer to wait.
- locked by
- 0.8.0 met
- recorded done
- lemonfibercrates/lemonfiber-core/src/app/engine/inflight.rs
- cited by
- lemonfiber@c1a191eb92
Concurrent lifecycle operations MUST be serialised, not raced.
Native-mode Jellyfin MUST report as host-managed and MUST NOT be started or stopped by lemonfiber.
- locked by
- 0.8.0 met
- recorded done
- lemonfibercrates/lemonfiber-core/src/app/engine.rscrates/lemonfiber-core/src/docker.rscrates/lemonfiber-core/src/app/engine/halted.rs
- recorded partial
- lemonfiber-companionapp-modules/kernel/src/Api/HowAServiceRuns.phpapp-modules/kernel/tests/Api/DaemonTest.phpapp-modules/kernel/tests/Api/DaemonsTest.php
- cited by
- lemonfiber@fb11824654
Every operation MUST state, before it acts, whether the disturbance it causes is bounded — naming that bound — or open-ended, and MUST NOT leave a surface to estimate it.
- locked by
- 0.15.0 met
- recorded done
- lemonfibercrates/lemonfiber-core/src/app.rscrates/lemonfiber-core/src/model/checking.rs
- recorded partial
- lemonfiber-companionapp-modules/kernel/src/Api/AgreedTo.phpapp-modules/kernel/src/Api/Supervising.phpapp-modules/kernel/tests/Api/AgreedToTest.phpapp-modules/sdk/tests/Api/ClientsThatAskWhatIsOfferedTest.php
- cited by
- lemonfiber@4106719520
The status reading's disturbs MUST carry an entry for fetching a form's images, stating that fetch as open-ended and naming what it waits on as the images coming down the line, so that a surface can say before a fetch that it may take long and use a lot of the line without estimating either (B2-R16, N2-R24).
- locked by
- 0.18.0 met
- recorded done
- lemonfibercrates/lemonfiber-core/src/app/disturbance.rscrates/lemonfiber-core/src/model/checking.rscrates/lemonfiber-core/src/app/rehearsal.rscontract/web-api/defs/Disturbances.jsoncrates/lemonfiber-core/src/app/disturbance/tests.rs::fetching_a_forms_images_is_open_ended_on_the_images_coming_down_the_line
- cited by
- lemonfiber@cda3e3d58c
The lines the container engine writes while pulling images MUST reach the web API's event stream as pull events, for a fetch and for a start that pulls, as they reach a terminal (B2-R12, N2-R24).
- locked by
- 0.18.0 unmarked
- recorded partial
- lemonfibercrates/lemonfiber-ports/src/narration.rscrates/lemonfiber-core/src/app/engine.rscrates/lemonfiber-api/src/events/saying.rscrates/lemonfiber-core/src/app/tests/lifecycle.rs::a_pull_hands_each_line_the_engine_writes_to_the_narratorcrates/lemonfiber-api/tests/integration/what_a_listener_hears.rs::each_line_a_pull_writes_reaches_the_stream_as_a_pull_event_of_its_job
- cited by
- lemonfiber@cda3e3d58c
A start or pull line on the event stream said by work a job names MUST carry that job's name, as the work's accepting reply carried it, so that a surface can tie each line to the start or fetch it asked for (B2-R2, N2-R23).
A start that did not complete MUST report the state of every service it addressed and of the services those depend on, read once when it ends and without waiting for any of them to settle, and MUST NOT report that no service fell short (B2-R3, N16-R6).
A container a start created and that never ran MUST be reported as failed, not stopped, and a form holding it MUST go on counting as brought (B2-R10).