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