Commit 54273c6
docs(spec): add spec 048 — lazy, trimmable control registration (#466)
Follow-on to spec 047. Settles how V1 control registration should happen so
it is automatic, lazy, and — the load-bearing requirement — does not defeat
AOT trimming. Captures the discussion and resolution:
- The pick-two-of-three tension (pure-data elements + automatic registration +
trimmability can't coexist), grounded in the trimmer following static refs.
- Rejected approaches (per-host RegisterHandler, element self-description/cctor,
[ModuleInitializer], reflection discovery) each tied to the requirement they
violate.
- Resolution: factory-as-registration-link, with Pattern A (static-cctor factory
holder for 3P controls) and Pattern B (generic Reg<E,C,H> scale pattern for the
built-in catalog).
- ControlRegistry contract, dispatch precedence, hot-path cost model, built-in
migration (dismantle RegisterV1BuiltInHandlers, keep Factories aggregation-free),
trim verification test, open questions, and phasing.
Design only — no implementation.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent b0c8174 commit 54273c6
1 file changed
Lines changed: 433 additions & 0 deletions
0 commit comments