OptionalserviceReach the server through the generic service route instead of named NUI actions.
Set it and events become server action names — get, create, update,
delete — rather than rows in shared/routes.ts. That is the only path open to an
app installed from the Store, which cannot add a route to a table shipping inside
micaOS.
A core service sets it too whenever an action it lists is contracted (MICA-213):
routes.test.ts then holds each scoped mock to a registered server event, the same
check a named route got. Named routes remain only for generic CRUD reached by NUI name.
OptionalsortOne order for the list, however it changed.
This is what "append vs prepend" was really asking. Notes pushed new rows onto the end, Photos unshifted them onto the front, and Photos sorted on load but not after an add — so a photo taken while the gallery was open sat in the right place only until the next reload. A comparator settles it once for every path.
OptionalvalidateThrow to refuse a write before it leaves the phone. The message reaches the user.
Runs on both paths, and they do not carry the same shape: add passes a TDraft
with no id yet, update passes a whole T. A validator therefore has to accept
either — Partial<Contact> is what the one implementation actually takes — which is
what the previous any was standing in for.
Configuration for
createCrudStore— sort order, validation, and the events it uses.