← The board

B2 Lifecycle control

Area
B — Running it
Audience
operator
Kind
feature
Status
accepted
Maturity
building
Labels
cli
Requires
G7
Relates to
B1B3B8

The feature in the specification · Read at

Requirements

  1. B2-R1acceptedMUST

    Starting MUST wait for health, not merely for the container to run, before reporting success.

    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
    cited by
    lemonfiber@fb11824654
  2. B2-R2acceptedMUST

    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
  3. B2-R3acceptedMUST

    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
  4. B2-R4acceptedMUST

    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
  5. B2-R5acceptedMUST

    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
  6. B2-R6acceptedMUST

    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
  7. B2-R7acceptedMUST

    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
  8. B2-R8acceptedMUST

    A service that fails to become healthy MUST time out within a bounded period and MUST surface its recent logs.

    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
    cited by
    lemonfiber@fb11824654
  9. B2-R9acceptedMUST

    Crash-looping MUST be reported distinctly from starting.

    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
    cited by
    lemonfiber@fb11824654
  10. B2-R10acceptedMUST

    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
  11. B2-R11acceptedMUST

    --dry-run MUST print the exact underlying command without executing it.

    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
    cited by
    lemonfiber@b732de22bd
  12. B2-R12acceptedMUST

    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
  13. B2-R13acceptedMUST

    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
  14. B2-R14acceptedMUST

    Concurrent lifecycle operations MUST be serialised, not raced.

    locked by
    0.8.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/app/engine/lock.rscrates/lemonfiber-core/src/machine.rscrates/lemonfiber-api/src/jobs.rscrates/lemonfiber-core/tests/integration/lock.rs
    cited by
    lemonfiber@f30886371flemonfiber@396e997791lemonfiber@2a92c2554alemonfiber@eed7708d18
  15. B2-R15acceptedMUST

    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
  16. B2-R16acceptedMUST

    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
  17. B2-R17acceptedMUST

    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
  18. B2-R18acceptedMUSTClaim it

    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
  19. B2-R19acceptedMUST

    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).

    locked by
    0.18.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/model/envelope.rscrates/lemonfiber-api/src/actions.rscrates/lemonfiber-api/src/events/stepping.rs
    cited by
    lemonfiber@3902d3ed91
  20. B2-R20acceptedMUST

    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).

    locked by
    0.18.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/app/engine/settling.rscrates/lemonfiber-core/src/docker.rscrates/lemonfiber-core/tests/integration/a_start_that_fell_short.rs
    cited by
    lemonfiber@2fd6d09277
  21. B2-R21acceptedMUST

    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).

    locked by
    0.18.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/app/engine/settling.rscrates/lemonfiber-core/src/docker.rscrates/lemonfiber-core/tests/integration/a_start_that_fell_short.rs
    cited by
    lemonfiber@2fd6d09277