The public surface — the GRAPH MODEL and its runtime, deliberately small:
Authoring: defineGraph / branch (the runtime — createStore,
parse — lives on the definitions), the def helpers via form-graph/defs,
defFamily, and the types an author writes against.
Runtime: store types and storage adapters. FormStore is type-only —
stores are created via graph.createStore(), never constructed directly.
Introspection & migration: branch enumeration and the persisted-intent
readers.
The ENGINE is not exported at all — defineForm, FormDefinition, codec(),
Fields/FieldOptions, the resolver internals. Every form is expressible as a
graph (the generation-scale hub included, proven by the parity suite), so
the engine is an implementation layer: package-internal code and the
corpus import it from its modules directly; the exports map makes it
unreachable for consumers.
The public surface — the GRAPH MODEL and its runtime, deliberately small:
form-graph/defs, defFamily, and the types an author writes against.FormStoreis type-only — stores are created viagraph.createStore(), never constructed directly.The ENGINE is not exported at all — defineForm, FormDefinition, codec(), Fields/FieldOptions, the resolver internals. Every form is expressible as a graph (the generation-scale hub included, proven by the parity suite), so the engine is an implementation layer: package-internal code and the corpus import it from its modules directly; the exports map makes it unreachable for consumers.