Layer 01 · Resolution
Dynamic constraint solver
A configured B2B assembly is not a form. Choosing a fascia depth invalidates three bracket options, changes the tube diameter that can carry the load, and moves the deduction that determines the cut width. The solver resolves that whole graph on every keystroke.
p95 full-graph resolution, 340-node assembly, measured in-browser
Mechanism
Constraints compile once into a directed acyclic graph at catalogue publish time. At configuration time the solver walks only the sub-graph downstream of the changed node, so complexity scales with what you touched rather than with catalogue size.
- Rules are declared as data in the catalogue, not written as branches in application code.
- Every resolution returns the reason an option was excluded, so an estimator is never shown an empty dropdown with no explanation.
- Cycles are rejected at publish time rather than discovered as a hang in production.
- A resolution is deterministic: the same configuration always yields the same cut list on any device.
Without this layer
Estimators re-derive exclusions from a printed compatibility chart, and the chart is a version behind the catalogue roughly always.