frontend-patterns/research/candidates/FailureBoundary.md
tegwick 3eecd74b0d Probe rendering and modal focus boundaries in pinned browser fixture
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a0cffe-206f-7323-89d3-b20ca4cf4bf9
2026-09-26 22:01:35 +02:00

48 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Failure Boundary
status: draft
maturity: hypothesis
families: [quality, composition]
scales: [L5, L6]
admission: research-candidate-only
---
# Failure Boundary
Context: a failing region should not remove unrelated useful work. Continuity
competes with the cost of partial-state recovery and boundary coordination.
Proposed solution: define which failures a boundary contains, replace the affected
region with usable feedback, and give recovery an explicit reset/retry contract.
Keep required navigation and recoverable intent outside the failing subtree when
appropriate. If containment itself fails, define the next enclosing recovery path.
Result: some work can continue; shared state corruption or global runtime failure
may still cross the boundary. Resetting presentation does not undo remote effects.
Never replay a write merely because a region remounted. Distinguish expected domain
rejection and network errors from uncaught rendering faults.
Evidence: B05 locates React's rendering-error boundary and documented exclusions;
this proposal does not claim it catches every asynchronous or event-handler error.
Alternative: fail the entire task when partial continuation would mislead users.
A fallback is a product state that needs accessible controls, not just logging.
Proposed relations: [Mutation Outcome Tracking](MutationOutcomeTracking.md) handles
uncertain writes separately; [Focus Return](FocusReturn.md) applies to modal dismissal,
not automatically to every error replacement.
Next test: inject render, event-handler, network and fallback failures separately;
record which are contained and whether retry duplicates an accepted operation.
Evidence locators: [breadth review](../reviews/PatternBreadthExpansion.md).
All relations are research proposals; no canonical identity or admitted graph edges.
The next test is planned, not executed. Known uses of the complete proposed contract
have not been verified in this investigation.
## Executed partial evidence — 2026-09-26
[Boundary experiment](../reviews/BoundaryRecoveryExperiment.md) X01–X04 runs real
React 19.3.0 in a browser fixture. A render fault stays inside its region; an event
handler error does not; a handled 503 uses explicit request state; a broken fallback
reaches the enclosing boundary. These are bounded mechanism observations, not
production recurrence or evidence for mutation rollback. Retain hypothesis maturity.