← The board

G4 Error & remedy model

Area
G — Cross-cutting UX
Audience
both
Kind
feature
Status
accepted
Maturity
building
Labels
ux
Relates to
C1C3C4G2

The feature in the specification · Read at

Requirements

  1. G4-R1acceptedMUST

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

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

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

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

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

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

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

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

    Repeated identical errors MUST be reported once with a count.

    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
    cited by
    lemonfiber@d60860214b
  10. G4-R10acceptedMUST

    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
  11. G4-R11acceptedMUST

    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).

    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
    cited by
    lemonfiber@973f32ab56
  12. G4-R12acceptedMUST

    Multiple plausible causes MUST be listed by likelihood rather than asserted as certain.

    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
    cited by
    lemonfiber@973f32ab56
  13. G4-R13acceptedMUST

    Non-interactive errors MUST go to stderr with a meaningful exit code and MUST NOT prompt.

    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
    cited by
    lemonfiber@c155500c23lemonfiber@973f32ab56
  14. G4-R14acceptedMUST

    File paths in errors MUST be shown in full.

    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
    cited by
    lemonfiber@13a11d01ee
  15. G4-R15acceptedMUST

    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
  16. G4-R16acceptedMUSTClaim it

    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
  17. G4-R17acceptedMUST

    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.

    locked by
    0.18.0 met
    recorded done
    lemonfibercrates/lemonfiber-error/src/problem.rscrates/lemonfiber-core/src/plugin/running.rs
    cited by
    lemonfiber@c8b5ffb198