← The board

F6 Plugin lifecycle

Area
F — Extensibility
Audience
operator
Kind
feature
Status
accepted
Maturity
built
Labels
extensibility, verification, updates
Requires
F3F4E4
Relates to
F5F7E3C9

The feature in the specification · Read at

Requirements

  1. F6-R1acceptedMUST

    An install MUST be rehearsable, stating every change it would make and every proof it would run, without writing anything.

    locked by
    0.16.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/plugin/stating.rscrates/lemonfiber-plugin/src/refusing/reaching.rs
    cited by
    lemonfiber@becca9b0c3
  2. F6-R2acceptedMUST

    Every change an install makes MUST be journalled as it is made.

    locked by
    0.16.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/rollback.rscrates/lemonfiber-core/src/plugin/placing.rscrates/lemonfiber-core/src/app/plugins.rs
    cited by
    lemonfiber@604aa970e0
  3. F6-R3acceptedMUST

    An install MUST NOT be reported as complete until the plugin's declared proofs have passed.

    locked by
    0.16.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/plugin/judging.rscrates/lemonfiber-core/src/app/putting_back.rs
    cited by
    lemonfiber@269c149f22
  4. F6-R4acceptedMUST

    An install MUST NOT be reported as complete until the stack's own verification has passed over what the plugin changed.

    locked by
    0.16.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/plugin/verified.rscrates/lemonfiber-core/src/app/engine/diagnosis.rs
    cited by
    lemonfiber@61611373c3
  5. F6-R5acceptedMUST

    A failure of either MUST reverse the install through the journal.

    locked by
    0.16.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/plugin/verified.rscrates/lemonfiber-core/src/app/engine/diagnosis.rs
    cited by
    lemonfiber@61611373c3
  6. F6-R6acceptedMUST

    A reversal that cannot complete MUST report the exact resulting state — what went back, what did not, and what each leaves.

    locked by
    0.16.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/plugin/verified.rscrates/lemonfiber-core/src/app/engine/diagnosis.rs
    cited by
    lemonfiber@61611373c3
  7. F6-R7acceptedMUST

    Removing a plugin MUST reverse its journalled changes, and MUST inherit the rollback layer's refusals for drift and for dependent later changes.

    locked by
    0.16.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/plugin/owning.rscrates/lemonfiber-core/src/journal.rscrates/lemonfiber-core/src/rollback.rs
    cited by
    lemonfiber@8254d2b85alemonfiber@8639dde376
  8. F6-R8acceptedMUST

    Where a change requires a running service to stop, what will be interrupted MUST be stated before it is.

    locked by
    0.16.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/app/disturbance.rscrates/lemonfiber-core/src/plugin/reports.rscrates/lemonfiber-core/src/app/plugins/removing.rs
    cited by
    lemonfiber@7d4d153a39
  9. F6-R9acceptedMUST

    Updating a plugin MUST be rehearsed as one account and reversed as one unit, and MUST NOT leave the stack between two versions.

    locked by
    0.16.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/app/plugins/updating.rscrates/lemonfiber-core/src/plugin/reports.rscrates/lemonfiber-core/src/app/putting_back.rs
    cited by
    lemonfiber@8254d2b85alemonfiber@14d079c574
  10. F6-R10acceptedMUST

    A plugin MUST declare the capabilities it requires of lemonfiber, and an unmet requirement MUST be refused by naming the capability rather than a version.

    locked by
    0.16.0 met
    recorded done
    lemonfibercrates/lemonfiber-plugin/src/refusing.rscrates/lemonfiber-core/src/app/plugins.rs
    cited by
    lemonfiber@7d4d153a39
  11. F6-R11acceptedMUST

    A removal that would leave a capability unfilled MUST state so before it happens.

    locked by
    0.16.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/plugin/owning.rscrates/lemonfiber-core/src/journal.rscrates/lemonfiber-core/src/rollback.rs
    cited by
    lemonfiber@8639dde376
  12. F6-R12acceptedMUST

    Reversing a change that re-points a data location MUST state that the data itself does not move back.

    locked by
    0.16.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/plugin/owning.rscrates/lemonfiber-core/src/journal.rscrates/lemonfiber-core/src/rollback.rs
    cited by
    lemonfiber@8639dde376
  13. F6-R13acceptedMUST

    Installing, rehearsing, updating and removing MUST each be reachable non-interactively with a meaningful exit status.

    locked by
    0.16.0 met
    recorded done
    lemonfibercrates/lemonfiber/src/exit/reports.rscrates/lemonfiber/tests/integration/every_plugin_step_runs_unattended.rs
    cited by
    lemonfiber@14d079c574
  14. F6-R14acceptedMUST

    What is installed MUST be served as a read of the web API answering with the plugins envelope the command answers with (ARCH-R47), and a plugin record that cannot be read MUST be refused with the error envelope rather than answered as nothing installed.

    locked by
    0.18.0 met
    recorded done
    lemonfibercrates/lemonfiber-api/src/read/table.rscrates/lemonfiber-core/src/wiring.rscrates/lemonfiber-core/src/stack.rs
    cited by
    lemonfiber@bfd4c31016lemonfiber-web@f729d8f300
  15. F6-R15acceptedMUST

    Installing, updating and removing a plugin MUST each be an action of the web API, taking the argument the command takes and answering with the plugins envelope the command answers with (F6-R13, ARCH-R48).

    locked by
    0.18.0 met
    recorded done
    lemonfibercrates/lemonfiber-api/src/actions/named/extending.rscrates/lemonfiber-core/src/app/plugins/refusals.rs
    cited by
    lemonfiber@8254d2b85alemonfiber@120b075276lemonfiber-web@8a2746c417lemonfiber-web@a819e4e88a
  16. F6-R16acceptedMUST

    Rehearsing an install, an update or a removal MUST be reachable over the web API, MUST write nothing, and MUST answer with the account the command's rehearsal gives (F6-R1, F6-R9, F6-R11).

    locked by
    0.18.0 met
    recorded done
    lemonfibercrates/lemonfiber-api/src/actions/named/extending.rscrates/lemonfiber-core/src/app/plugins/refusals.rs
    cited by
    lemonfiber@120b075276lemonfiber-web@a819e4e88a
  17. F6-R17acceptedMUST

    Rehearsing an install, an update or a removal MUST answer with an offer naming what it read; the act MUST take that offer as its yes, alike at the command line and over the web API (ARCH-R48), MUST build it again from what is there when it runs, and MUST be refused, naming what moved, where the two differ (ADR-0031).

    locked by
    0.18.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/app/plugins/offering.rscrates/lemonfiber-core/src/plugin/recipes.rs
    cited by
    lemonfiber@01e63d948clemonfiber-web@a819e4e88a