C9 Config drift detection & seed policy
- Area
- C — Trust & correctness
- Audience
- operator
- Kind
- feature
- Status
- accepted
- Maturity
- built
- Labels
- seed, verification
The feature in the specification · Read at
Requirements
lemonfiber MUST record every value it writes into a service, forming an expected-state baseline.
- locked by
- 0.4.0 met
- recorded done
- lemonfiberspec:00-overview/decisions/0005-embedded-stack-assets.mdcrates/lemonfiber-core/src/baseline.rscrates/lemonfiber-core/src/seed.rscrates/lemonfiber-core/src/seed/run.rscrates/lemonfiber-core/src/app/materialise.rscrates/lemonfiber-core/src/materialised.rs
- cited by
- lemonfiber@dbd2ed3857
Drift detection MUST compare expected, actual and desired state.
- locked by
- 0.4.0 met
- recorded done
- lemonfiberspec:00-overview/decisions/0005-embedded-stack-assets.mdcrates/lemonfiber-core/src/baseline.rscrates/lemonfiber-core/src/seed.rscrates/lemonfiber-core/src/seed/run.rscrates/lemonfiber-core/src/app/materialise.rscrates/lemonfiber-core/src/materialised.rs
- cited by
- lemonfiber@53ebd11b71
Seeding MUST NOT silently overwrite a value that differs from the expected baseline.
- locked by
- 0.4.0 met
- recorded done
- lemonfiberspec:00-overview/decisions/0005-embedded-stack-assets.mdcrates/lemonfiber-core/src/baseline.rscrates/lemonfiber-core/src/seed.rscrates/lemonfiber-core/src/seed/run.rscrates/lemonfiber-core/src/app/materialise.rscrates/lemonfiber-core/src/materialised.rs
- cited by
- lemonfiber@53ebd11b71
A value differing from expected, where lemonfiber's intent is unchanged, MUST be preserved.
- locked by
- 0.4.0 met
- recorded done
- lemonfiberspec:00-overview/decisions/0005-embedded-stack-assets.mdcrates/lemonfiber-core/src/baseline.rscrates/lemonfiber-core/src/seed.rscrates/lemonfiber-core/src/seed/run.rscrates/lemonfiber-core/src/app/materialise.rscrates/lemonfiber-core/src/materialised.rs
- cited by
- lemonfiber@53ebd11b71
Where both actual and desired have changed, lemonfiber MUST present the conflict and MUST NOT resolve it automatically.
- locked by
- 0.4.0 met
- recorded done
- lemonfiberspec:00-overview/decisions/0005-embedded-stack-assets.mdcrates/lemonfiber-core/src/baseline.rscrates/lemonfiber-core/src/seed.rscrates/lemonfiber-core/src/seed/run.rscrates/lemonfiber-core/src/app/materialise.rscrates/lemonfiber-core/src/materialised.rs
- cited by
- lemonfiber@bc244b13af
Operator edits MUST be promotable to expected state, surviving future seeds and restores.
- locked by
- 0.4.0 met
- recorded done
- lemonfiberspec:00-overview/decisions/0005-embedded-stack-assets.mdcrates/lemonfiber-core/src/baseline.rscrates/lemonfiber-core/src/seed.rscrates/lemonfiber-core/src/seed/run.rscrates/lemonfiber-core/src/app/materialise.rscrates/lemonfiber-core/src/materialised.rs
- cited by
- lemonfiber@96b2067475
Drift MUST be reported informationally, escalating to warning only when it breaks functionality.
- locked by
- 0.4.0 met
- recorded done
- lemonfibercrates/lemonfiber-core/src/repair.rs
- cited by
- lemonfiber@27a11270dc
Comparison MUST be semantic where a service normalises values on write.
- locked by
- 0.4.0 met
- recorded done
- lemonfiberspec:00-overview/decisions/0005-embedded-stack-assets.mdcrates/lemonfiber-core/src/baseline.rscrates/lemonfiber-core/src/seed.rscrates/lemonfiber-core/src/seed/run.rscrates/lemonfiber-core/src/app/materialise.rscrates/lemonfiber-core/src/materialised.rs
- cited by
- lemonfiber@96b2067475
Adopting an existing setup MUST baseline from what is found rather than reporting mass drift.
- locked by
- 0.4.0 met
- recorded done
- lemonfiberspec:00-overview/decisions/0005-embedded-stack-assets.mdcrates/lemonfiber-core/src/baseline.rscrates/lemonfiber-core/src/seed.rscrates/lemonfiber-core/src/seed/run.rscrates/lemonfiber-core/src/app/materialise.rscrates/lemonfiber-core/src/materialised.rs
- cited by
- lemonfiber@96b2067475
A service schema change MUST trigger re-baselining rather than mass drift reporting.
Drift in a secret MUST be reported without displaying either value.
A full reset to lemonfiber's state MUST be available as an explicit, confirmed action naming what will be lost.
Locally modified materialised stack files MUST be detected by content and MUST NOT be overwritten on upgrade without a diff and confirmation.
- locked by
- 0.4.0 met
- recorded done
- lemonfiberspec:00-overview/decisions/0005-embedded-stack-assets.mdcrates/lemonfiber-core/src/baseline.rscrates/lemonfiber-core/src/seed.rscrates/lemonfiber-core/src/seed/run.rscrates/lemonfiber-core/src/app/materialise.rscrates/lemonfiber-core/src/materialised.rs
- cited by
- lemonfiber@e503952087
Loss of the expected-state record MUST be reported, with re-baselining offered.
- locked by
- 0.4.0 met
- recorded done
- lemonfiberspec:00-overview/decisions/0005-embedded-stack-assets.mdcrates/lemonfiber-core/src/baseline.rscrates/lemonfiber-core/src/seed.rscrates/lemonfiber-core/src/seed/run.rscrates/lemonfiber-core/src/app/materialise.rscrates/lemonfiber-core/src/materialised.rs
- cited by
- lemonfiber@18726a81bf
A value the service still holds as lemonfiber wrote it, where lemonfiber's intent has since moved on, MUST be bringable up to date on request rather than only reported.
- locked by
- 0.7.0 met
- recorded done
- lemonfibercrates/lemonfiber-core/src/repair.rs
- cited by
- lemonfiber@314718f702
Reading what a full reset would revert MUST answer with an offer naming the edits and connections it read; the reset 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 it finds when it runs, and MUST be refused, naming what moved, where the two differ. A bare confirm MUST NOT be a yes to a reset over the web API (C9-R12, N6-R8).
- locked by
- 0.18.0 met
- recorded done
- lemonfibercrates/lemonfiber-core/src/app/reset.rscrates/lemonfiber-core/src/agreement.rscrates/lemonfiber-error/src/codes/stack.rscrates/lemonfiber-api/src/actions/asked/takers.rscrates/lemonfiber-api/src/actions/named.rscrates/lemonfiber/src/cli/request.rscrates/lemonfiber/src/acting/errand.rscrates/lemonfiber-core/src/app/reset/tests.rs::an_unconfirmed_reset_previews_and_writes_nothingcrates/lemonfiber-core/src/app/reset/tests.rs::an_answer_to_a_reading_that_has_moved_is_refused_and_reverts_nothingcrates/lemonfiber-api/tests/integration/what_an_agreement_covers.rs::a_reset_an_upgrade_and_a_restore_carry_the_agreement_into_the_commandcrates/lemonfiber/src/acting/errand/tests.rs::a_reset_reverts_nothing_until_its_reading_is_answered
- cited by
- lemonfiber@cc1b83cf00