Attach rules — same chain section as a graph's .effect. Hub-level rules
usually trigger on fields owned elsewhere, so the map is loosely typed:
annotate rule params yourself. NOT auto-scoped (the hub can't know when
the mounting form considers it active) — guard inside the rule.
The server entry point: boundary schemas -> resolve -> output validation.
Best-effort parse: valid fields plus the errors, no throw.
PHANTOM — never set at runtime. Carries the wire map in the type so composition sites (
.use, hub members) can INFER it; without a member mentioning W, inference has no site and falls back to the constraint, whosekeyofisstring— which would Omit every key from DataOf.