← The board

F1 Customisation & escape hatches

Area
F — Extensibility
Audience
operator
Kind
feature
Status
accepted
Maturity
building
Labels
extensibility
Relates to
C9F2

The feature in the specification · Read at

Requirements

  1. F1-R1acceptedMUST

    The stack MUST be fully operable with plain docker compose in the project's directory, from the project lemonfiber writes, the files it names and the .env beside it, with no lemonfiber binary running.

    locked by
    no version locks it yet
    recorded done
    lemonfibercrates/lemonfiber-core/src/app/project/profiled.rscrates/lemonfiber-core/src/project/entry.rscrates/lemonfiber-core/tests/integration/plain_compose.rs
    recorded partial
    lemonfiber-media-stackscripts/generated.pyscripts/check_runs.py
  2. F1-R2acceptedMUST

    Every command MUST support a dry-run mode printing the exact underlying invocation.

    locked by
    0.15.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/app/rehearsal.rscrates/lemonfiber-core/src/app.rscrates/lemonfiber-core/src/seed.rscrates/lemonfiber-core/src/repair/run.rscrates/lemonfiber/tests/integration/a_rehearsal_changes_nothing.rs
    cited by
    lemonfiber@dbc5bc238dlemonfiber@33ea43f663lemonfiber@ecd8c12b86lemonfiber@2a98a32a02lemonfiber@3e9f9c2fd5lemonfiber@ec4969a5d2lemonfiber@ecd8ed52b2lemonfiber@e3fb72e649
  3. F1-R3acceptedMUST

    An external stack directory MUST be usable in place of the embedded stack.

    locked by
    0.15.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/stack.rs
    cited by
    lemonfiber@ecd8ed52b2lemonfiber@46f67cd452lemonfiber@13a11d01ee
  4. F1-R4acceptedMUST

    Locally modified materialised files MUST be detected by content and MUST NOT be overwritten without a diff and confirmation.

    locked by
    0.15.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/materialised.rscrates/lemonfiber-core/src/app/apply.rscrates/lemonfiber-core/src/config/store.rscrates/lemonfiber-core/src/reconfigure/review.rs
    cited by
    lemonfiber@468091e1dclemonfiber@ecd8ed52b2
  5. F1-R5acceptedMUST

    Adding a service to the stack MUST NOT require a lemonfiber code change or release.

    locked by
    0.15.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/outbound/theirs.rscrates/lemonfiber-manifest/src/validate.rs
    recorded partial
    lemonfiber-media-stackstack.tomlscripts/test_validate_manifest.py::declares 'reaches' without 'asks_for'
    cited by
    lemonfiber@468091e1dclemonfiber@be01322365lemonfiber@ecd8ed52b2lemonfiber-media-stack@ed18a0cd14lemonfiber-media-stack@c87a625a1clemonfiber-media-stack@fbdafe0eb2
  6. F1-R6acceptedMUST

    Every interactive action MUST have a non-interactive equivalent with a meaningful exit status.

    locked by
    0.15.0 met
    recorded done
    lemonfibercrates/lemonfiber/tests/architecture/surface_parity.rscrates/lemonfiber/src/exit.rscrates/lemonfiber-core/src/app/engine/streaming.rs
    cited by
    lemonfiber@b4053c8fc6lemonfiber@ecd8ed52b2lemonfiber@86c24459c4
  7. F1-R7acceptedMUST

    Services and configuration areas MUST be markable as unmanaged, after which lemonfiber MUST observe but never write.

    locked by
    0.15.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/unmanaged.rscrates/lemonfiber-core/src/seed/report.rscrates/lemonfiber-core/src/doctor.rscrates/lemonfiber-core/src/repair/run.rs
    cited by
    lemonfiber@468091e1dclemonfiber@ecd8ed52b2
  8. F1-R8acceptedMUST

    Unmanaged areas MUST NOT be reported as drift.

    locked by
    0.15.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/unmanaged.rscrates/lemonfiber-core/src/seed/report.rscrates/lemonfiber-core/src/doctor.rscrates/lemonfiber-core/src/repair/run.rs
    cited by
    lemonfiber@468091e1dclemonfiber@ecd8ed52b2
  9. F1-R9acceptedMUST

    Manifest validation failures MUST name the specific violation and its location, and MUST report all violations in one pass.

    locked by
    0.15.0 met
    recorded done
    lemonfibercrates/lemonfiber-manifest/src/validate.rscrates/lemonfiber-core/src/stack.rs
    recorded partial
    lemonfiber-media-stackscripts/validate_manifest.pyscripts/report.py
    cited by
    lemonfiber@ecd8ed52b2lemonfiber@ce320dfaf0lemonfiber@5ceed4089alemonfiber-media-stack@62c28fc826
  10. F1-R10acceptedMUST

    An unknown service MUST still support generic lifecycle and status operations.

    locked by
    0.15.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/docker.rscrates/lemonfiber-core/tests/integration/a_service_this_build_has_never_heard_of.rs
    cited by
    lemonfiber@468091e1dclemonfiber@ecd8ed52b2
  11. F1-R11acceptedMUST

    Features requiring service-specific knowledge MUST report unsupported for unknown services rather than failing.

    locked by
    0.15.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/outbound/theirs.rscrates/lemonfiber-core/src/app/targets/curators.rscrates/lemonfiber-core/src/unsupported.rs
    cited by
    lemonfiber@468091e1dclemonfiber@ecd8ed52b2
  12. F1-R12acceptedMUST

    Machine-readable output MUST be a versioned, stable interface.

    locked by
    0.15.0 unmarked
    recorded partial
    lemonfibercrates/lemonfiber/src/render/plugin.rscrates/lemonfiber-core/src/model.rscontract/web-api-surface/index.jsoncrates/lemonfiber-api/src/contract/stability.rs
    cited by
    lemonfiber@82b419e23dlemonfiber@468091e1dclemonfiber@ecd8ed52b2
  13. F1-R13acceptedMUST

    A configuration violating internal guidance MUST be reported with its consequence, and MUST NOT be refused.

    locked by
    0.15.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/doctor/storage/mounts.rscrates/lemonfiber-core/src/stack.rscrates/lemonfiber-core/src/project/overlay.rscrates/lemonfiber-core/src/doctor/acknowledged.rscrates/lemonfiber-core/src/project/overlay/tests.rs
    cited by
    lemonfiber@468091e1dclemonfiber@b8a2e354edlemonfiber@ecd8ed52b2
  14. F1-R14acceptedMUST

    Multiple independent stacks MUST be supportable on one host, with port conflicts detected.

    locked by
    0.15.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/migration/standing.rscrates/lemonfiber-core/src/app/preflight.rscrates/lemonfiber-core/src/network.rs
    cited by
    lemonfiber@468091e1dclemonfiber@ecd8ed52b2