The Reactivity Contract
With WildflowerJS, you don't have to learn the framework's reactive machinery. You declare state, and bindings, and methods, and the framework does all the work. There are no update loops to schedule, no re-render models to think about. WildflowerJS handles it all seamlessly behind the scenes.
With other frameworks, this isn't the case, and you can tell from your first import lines that have useState, or ref, or signal, or effect. Those are the frameworks' update machinery, manually added, in every file you write. WildflowerJS asks you to import nothing.
An "edge" is a place where the internal machinery could show through. A write that doesn't repaint, a computed that goes stale, a template the browser strips before we ever see it, a read that costs a hundred times what it looks like. Every abstraction has edges. Hitting one means the invisible thing behind your page suddenly demands to be understood, which is what we just said you would never have to do.
Every reactive framework has edges like these, and the honest ones document them. Rules for hooks, reactivity caveat pages, lists of what not to destructure. Those pages exist to teach you the machinery, and they have to, because in those frameworks the machinery is part of the API you write all day. WildflowerJS keeps the machinery out of the API entirely. You never import a signal, wrap a ref, or declare a dependency, so the places where the internals can reach you shrink from the whole programming model to a finite list that can be tracked. A finite list is the only kind a contract can cover.
We hold ourselves to this with a working contract. Internally we keep a ledger of every edge we know of, 45 today, where our reactive machinery could reach the developer. Each edge is triaged to a status and the triage is enforced by our release gates. An edge cannot land untriaged, and every status has to prove itself against a test or a documentation page before a build passes.
The machinery-exposure score
The contract covers the edges we know about. It cannot cover the ones we missed, so we also measure. We ask an AI model that has never seen WildflowerJS to build complete apps from the public documentation, then scan every generated file for machinery leaking through: framework timing calls, re-render workarounds, hand-rolled update loops, observers watching framework output, manual dirty flags. The 2026-07-17 run scored 0 across 100 generated apps. Not one timing call in the corpus. We re-measure every release.