frontend-patterns/research/reviews/PatternBreadthExpansion.md
tegwick 50c68575f1 Broaden pattern hypotheses across presentation composition and quality
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a0cffe-206f-7323-89d3-b20ca4cf4bf9
2026-09-26 21:46:28 +02:00

8.5 KiB
Raw Permalink Blame History

Pattern breadth expansion — 2026-09-26

Status: editorial source review and synthetic decision probes by Codex, under WP-0003 T01. The user explicitly requested broader pattern coverage after the navigation slice. This supersedes its immediate pause on adding candidates, while preserving the open evidence gates and pending implementation tests.

Six drafts cover decisions absent or implicit in the previous ten: presentation logic placement, derived-value ownership, feature boundaries, selective execution, rendering-failure containment and return from modal interaction. They are research hypotheses, not six new inventions or canonical admissions. Most develop existing program targets. Focus Return deliberately narrows the broad accessibility seed. No additional live inference was run; future live execution remains on llm-connect.

Primary claims before normalization

Accessed 2026-09-26. Except the dated Fowler article and pinned FSD document, these are living pages with exact revisions/publication dates unknown. Documentation examples are not observed production deployments. No application was executed.

Claim / source Locator Source observation Proposed interpretation and limit
B01 / SRC-0023 Fowler: Presentation Model, How it Works / When to Use It; 2004-07-19, author-marked draft Presentation decisions can live outside GUI controls; synchronizing model and view adds work Develop Presentation Model as a particular separation mechanism, not a universal controller architecture
B02 / SRC-0024 Redux: Deriving Data with Selectors, Deriving Data / Calculating Derived Data Compute additional values from minimal stored state; selectors encapsulate lookups and calculations Develop Derived State independently of the library; editable overrides and historical snapshots require different ownership
B03 / SRC-0025 FSD: Slices and segments, pinned source, Slices / Public API rule Product-oriented groups expose public interfaces and constrain imports Develop Vertical Feature Slice; module organization alone says nothing about release independence
B04 / SRC-0026 Astro: Islands architecture, What is an island? / Client Islands Client islands activate selected components separately; regions can communicate and share state Develop selective client execution; do not infer security isolation, fault containment or measured speed
B05 / SRC-0027 React: Component, Catching rendering errors Rendering boundaries show a fallback; exclusions include event handlers, SSR, boundary-self errors and ordinary async callbacks; documented transition exception exists Develop a boundary with a stated failure scope, not a catch-all recovery guarantee
B06 / SRC-0028 WAI APG: Modal dialog, Keyboard Interaction, notes 1–2 Focus enters the dialog and normally returns to its invoker; removed invokers and subsequent workflow steps justify another target Develop Focus Return narrowly around modal tasks, not arbitrary route changes or a conformance certification

Source integrity note: the rendered FSD page contained unrelated footer links. The substantive grouping/interface claims were checked against the project's pinned repository source above; footer material was excluded. This corroborates the text, not an independent implementation or publisher.

Distinct decisions and counterexamples

Candidate Decision newly made explicit Counterexample / overlap boundary
Presentation Model Where does presentation behavior live independently of widgets? A trivial page needs no extra object; Local Draft State concerns intent lifetime instead
Derived State Which values can be recomputed rather than independently changed? A user override or historical snapshot is not merely a cache; derivation does not establish freshness
Vertical Feature Slice Which changes belong behind one module interface? A coupled backend/API contract can still force coordinated releases
Islands of Interactivity Which document regions need client activation? A tightly coupled editor may justify one runtime root; enhancement and fault isolation remain separate
Failure Boundary Which failure can this region contain, and how does it recover? Partial continuation can be unsafe; rendering recovery cannot reverse a payment
Focus Return Where does keyboard work continue after a modal closes? Returning to a deleted invoker is invalid; ordinary background updates should not move focus

Synthetic probes — not full validation cases

These are author-generated design traces, not runtime observations or an independent comparison with a baseline. They provide provisional links to planned cases without marking VC-04–10 covered or complete.

Probe Baseline decision in plain language Candidate contribution / changed constraint
Dense workspace, relevant to VC-08 Keep selection, editable intent and server data distinct; compute visible totals Presentation Model organizes the decisions; Derived State avoids another mutable total. Add user override: store the override as an explicit input instead of recomputing it away
Publication with one calculator, extension of VC-03 Deliver readable content and activate the calculator separately Islands describe activation placement. Change to tightly coupled whole-page editing: reconsider the split; no automatic performance advantage
Two feature teams, relevant to VC-06 Keep capability internals private and compose through interfaces Vertical Feature Slice explains module boundaries. Change to independent releases: add compatibility/version/deployment contracts; the slice alone is insufficient
Optional dashboard panel, relevant to VC-05 A rendering fault shows a local fallback while other panels remain usable Failure Boundary makes the caught failure class explicit. Change the fault to a rejected network request: handle request state separately; do not assume the render boundary caught it
Reconciliation dialog over a record list, extension of VC-01 Closing should restore a usable keyboard continuation Focus Return identifies invocation ownership. Remove the invoking row during the task: choose the next logical surviving target, with a nested-dialog ownership check

These baseline narratives already express the decisions. Naming them has not been shown to improve outcomes. Each draft records a concrete next test and an alternative.

Dispositions and unresolved questions

Retain six separate hypotheses for now, giving sixteen developed drafts. Keep Presentation Model distinct from its optional Derived State and Local Draft State; keep module, activation and failure boundaries distinct even when they coincide. Focus Return may ultimately belong inside a broader interaction pattern, but its current evidence only supports a narrower investigation.

Defer Independent Feature Boundary until deployment evidence is located; defer Persistent Subscription and Conflict-Free Merge until ordering/reconnect or merge semantics are studied. No need to add those names just to populate every family.

Q03 recurrence and Q04 usefulness remain open. Q06 now has an explicit counterexample: a source module boundary can exist within a single coordinated deployment. Q05 gains a question: should interruption/focus contracts shape composition before components are selected? Neither question is closed by these documentary probes.

WP-0003 owns the next evidence: inspect a pinned application for feature imports and release boundaries; execute rendering versus request-failure probes; exercise modal return with a removed invoker. Keep the earlier navigation runtime checks and WP-0002 human-validation obligation open. Evidence gaps do not prevent this authorized exploratory expansion, and the expansion does not satisfy the M1/M2 gates.