G4 Error & remedy model
- Area
- G — Cross-cutting UX
- Audience
- both
- Kind
- feature
- Status
- accepted
- Maturity
- building
- Labels
- ux
The feature in the specification · Read at
Requirements
Every user-facing error MUST state what happened, what it means, and what to do.
- locked by
- 0.5.0 met
- recorded done
- lemonfibercrates/lemonfiber-error/src/problem.rscrates/lemonfiber-error/src/retry.rscrates/lemonfiber-adapters/src/retrying.rscrates/lemonfiber/src/exit.rscrates/lemonfiber-core/src/health/observed.rscrates/lemonfiber-core/src/health.rs
- recorded partial
- lemonfiber-companiontests/Feature/EveryObstacleSaysSomethingOfItsOwnTest.php
- recorded partial
- lemonfiber-websrc/routes/Away.sveltesrc/routes/Away.test.ts::shows the refusal in lemonfiber's own words
- cited by
- lemonfiber@b339fd3949lemonfiber@e54279d6dclemonfiber@973f32ab56
Errors MUST use exactly the four defined severity levels.
- locked by
- 0.5.0 met
- recorded done
- lemonfibercrates/lemonfiber-error/src/problem.rscrates/lemonfiber-error/src/retry.rscrates/lemonfiber-adapters/src/retrying.rscrates/lemonfiber/src/exit.rscrates/lemonfiber-core/src/health/observed.rs
- recorded partial
- lemonfiber-companionapp-modules/kernel/tests/Api/SeverityTest.php
- cited by
- lemonfiber@973f32ab56
Errors sharing a root cause MUST be grouped, with the cause reported rather than each symptom independently.
- locked by
- 0.5.0 met
- recorded done
- lemonfibercrates/lemonfiber-error/src/problem.rscrates/lemonfiber-error/src/retry.rscrates/lemonfiber-adapters/src/retrying.rscrates/lemonfiber/src/exit.rscrates/lemonfiber-core/src/health/observed.rs
- recorded partial
- lemonfiber-companionapp-modules/health/tests/Api/Queries/TheCauseBeforeItsSymptomsTest.php
- cited by
- lemonfiber@fb11824654
Plain explanation MUST lead; underlying technical detail MUST be available but MUST NOT lead.
- locked by
- 0.5.0 met
- recorded done
- lemonfibercrates/lemonfiber-error/src/problem.rscrates/lemonfiber-error/src/retry.rscrates/lemonfiber-adapters/src/retrying.rscrates/lemonfiber/src/exit.rscrates/lemonfiber-core/src/health/observed.rs
- recorded partial
- lemonfiber-companionapp-modules/kernel/src/Api/WentWrong.phpapp-modules/sdk/src/Api/Reports.phpapp-modules/kernel/tests/Api/FindingTest.phpapp-modules/sdk/tests/Api/ReportsTest.php
- recorded partial
- lemonfiber-websrc/routes/DashboardStanding.test.ts::says in the source's own words why it could not be asked
- cited by
- lemonfiber@23ed612364lemonfiber@63f21a5f19lemonfiber@973f32ab56
Errors MUST NOT attribute fault to the operator.
- locked by
- 0.5.0 met
- recorded done
- lemonfibercrates/lemonfiber/tests/architecture/plain_language.rs
- cited by
- lemonfiber@64046050belemonfiber@973f32ab56
Every error kind MUST carry a stable identifier.
- locked by
- 0.5.0 met
- recorded done
- lemonfibercrates/lemonfiber-error/src/problem.rscrates/lemonfiber-error/src/retry.rscrates/lemonfiber-adapters/src/retrying.rscrates/lemonfiber/src/exit.rscrates/lemonfiber-core/src/health/observed.rs
- recorded partial
- lemonfiber-companionapp-modules/kernel/tests/Api/ObstacleTest.php
- cited by
- lemonfiber@c155500c23lemonfiber@973f32ab56
Where no remedy is known, lemonfiber MUST say so and MUST offer escalation rather than speculating.
- locked by
- 0.5.0 met
- recorded done
- lemonfibercrates/lemonfiber-error/src/problem.rscrates/lemonfiber-error/src/retry.rscrates/lemonfiber-adapters/src/retrying.rscrates/lemonfiber/src/exit.rscrates/lemonfiber-core/src/health/observed.rs
- recorded partial
- lemonfiber-companionapp-modules/operator/src/View/Components/SomebodyToAsk.php
- cited by
- lemonfiber@973f32ab56
Errors MUST NOT contain credentials or secrets.
- locked by
- 0.5.0 met
- recorded done
- lemonfibercrates/lemonfiber-error/src/problem.rscrates/lemonfiber-error/src/retry.rscrates/lemonfiber-adapters/src/retrying.rscrates/lemonfiber/src/exit.rscrates/lemonfiber-core/src/health/observed.rs
- recorded partial
- lemonfiber-companiontests/Templates/NothingSecretReachesAScreenTest.php
- cited by
- lemonfiber@973f32ab56lemonfiber@d60860214b
Repeated identical errors MUST be reported once with a count.
A failure during error handling MUST NOT loop or cascade.
- locked by
- 0.5.0 met
- recorded done
- lemonfibercrates/lemonfiber-core/tests/integration/error_model.rs
- cited by
- lemonfiber@973f32ab56
On an operator's surface, errors originating in a service MUST include that service's own message verbatim as detail. A member's surface shows none (G2-R16).
Multiple plausible causes MUST be listed by likelihood rather than asserted as certain.
Non-interactive errors MUST go to stderr with a meaningful exit code and MUST NOT prompt.
File paths in errors MUST be shown in full.
Transient failures MUST be retried before reporting, and distinguished from persistent ones.
- locked by
- 0.5.0 met
- recorded done
- lemonfibercrates/lemonfiber-error/src/problem.rscrates/lemonfiber-error/src/retry.rscrates/lemonfiber-adapters/src/retrying.rscrates/lemonfiber/src/exit.rscrates/lemonfiber-core/src/health/observed.rs
- recorded partial
- sdk-pythonsrc/lemonfiber/_protocol/retry.pytests/test_asked_again.py::test_a_read_is_asked_again_twice_after_passing_failures_waiting_twice_as_long_the_second_timetests/test_asked_again.py::test_what_changes_something_is_never_asked_again
- cited by
- lemonfiber@5bd426f12c
Every refusal and every obstacle the core answers to a household member's session MUST carry a sentence written for the household, and a remedy the member can act on, beside its code (ARCH-R138). The sentence MUST name no service, size, address or state of the stack (G2-R16), and a fault of the stack MUST read as not working right now with the operator told (N3-R10).
- locked by
- 0.18.0 unmarked
- cited by
- lemonfiber-companion@a97e98a0f5
A problem that ends a run of recipe steps part-way MUST carry, as data beside its detail, every step the run declares in order, each with what it came to and whether it landed somewhere other than the plugin's own services; every other problem MUST carry no such field.