← The board

C9 Config drift detection & seed policy

Area
C — Trust & correctness
Audience
operator
Kind
feature
Status
accepted
Maturity
built
Labels
seed, verification
Relates to
A5C3D1E3F1

The feature in the specification · Read at

Requirements

  1. C9-R1acceptedMUST

    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
  2. C9-R2acceptedMUST

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

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

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

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

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

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

    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
  9. C9-R9acceptedMUST

    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
  10. C9-R10acceptedMUST

    A service schema change MUST trigger re-baselining rather than mass drift reporting.

    locked by
    0.4.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/app.rscrates/lemonfiber-core/src/app/materialise.rscrates/lemonfiber-core/src/app/reset.rscrates/lemonfiber-core/src/app/targets.rs
    cited by
    lemonfiber@27a11270dc
  11. C9-R11acceptedMUST

    Drift in a secret MUST be reported without displaying either value.

    locked by
    0.4.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/materialised.rscrates/lemonfiber-core/src/config/store.rs
    cited by
    lemonfiber@2c2068657d
  12. C9-R12acceptedMUST

    A full reset to lemonfiber's state MUST be available as an explicit, confirmed action naming what will be lost.

    locked by
    0.4.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/app.rscrates/lemonfiber-core/src/app/materialise.rscrates/lemonfiber-core/src/app/reset.rscrates/lemonfiber-core/src/app/targets.rs
    cited by
    lemonfiber@27a11270dc
  13. C9-R13acceptedMUST

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

    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
  15. C9-R15acceptedMUST

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

    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