F1 Customisation & escape hatches
- Area
- F — Extensibility
- Audience
- operator
- Kind
- feature
- Status
- accepted
- Maturity
- building
- Labels
- extensibility
The feature in the specification · Read at
Requirements
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
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
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
Locally modified materialised files MUST be detected by content and MUST NOT be overwritten without a diff and confirmation.
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
Every interactive action MUST have a non-interactive equivalent with a meaningful exit status.
Services and configuration areas MUST be markable as unmanaged, after which lemonfiber MUST observe but never write.
Unmanaged areas MUST NOT be reported as drift.
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
An unknown service MUST still support generic lifecycle and status operations.
Features requiring service-specific knowledge MUST report unsupported for unknown services rather than failing.
Machine-readable output MUST be a versioned, stable interface.
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
Multiple independent stacks MUST be supportable on one host, with port conflicts detected.