The four markers

The four markersFour columns, enumerated, deferred, refine and live, with portable-check beside: what each promises and what a client does, from stated to ask every time.A key in the full schema carries at most one marker for its static refiners, and live besides. enumerated Stated PROMISES Every answer of the key's static refiners is written as a conditional on its frame. A CLIENT DOES Narrow locally: evaluate the conditionals for the values. 1 deferred Fetch once PROMISES Static, but left out for its size: a list the site decides, past site_list_limit. A CLIENT DOES Fetch the full schema once per choice, with choose= naming the key and its value, and cache it until the list changes. refine Ask with values PROMISES Static, but not writable: a refiner over a number or free text, or past ENUMERATION_CAP. A CLIENT DOES Ask the narrowing with values, POST .../schema or the :schema tool, when a watched key changes. live Ask every time PROMISES Runtime: a rule no schema states (a lookup, uniqueness, the account, the time), or an access answer only the subject settles. A CLIENT DOES Ask the narrowing per request, and never cache the answer. BESIDE THEM portable-check Send and read PROMISES A constraint only the server checks, named with what it checks. A CLIENT DOES Send, or rehearse with ?dryRun=true, and read the refusal. Round trips a client pays for the key none one per choice one per change one per request The four markersenumerated, deferred, refine and live, with portable-check beside: what each promises and what a client does.A key in the full schema carries at most one marker for its static refiners, and live besides. enumerated Stated PROMISES Every answer of the key's static refiners is written as a conditional on its frame. A CLIENT DOES Narrow locally: evaluate the conditionals for the values. Round trips: none 1 deferred Fetch once PROMISES Static, but left out for its size: a list the site decides, past site_list_limit. A CLIENT DOES Fetch the full schema once per choice, with choose= naming the key and its value, and cache it until the list changes. Round trips: one per choice refine Ask with values PROMISES Static, but not writable: a refiner over a number or free text, or past ENUMERATION_CAP. A CLIENT DOES Ask the narrowing with values, POST .../schema or the :schema tool, when a watched key changes. Round trips: one per change live Ask every time PROMISES Runtime: a rule no schema states (a lookup, uniqueness, the account, the time), or an access answer only the subject settles. A CLIENT DOES Ask the narrowing per request, and never cache the answer. Round trips: one per request BESIDE THEM portable-check Send and read PROMISES A constraint only the server checks, named with what it checks. A CLIENT DOES Send, or rehearse with ?dryRun=true, and read the refusal.

A marker on a key in the full schema says how far that key can be trusted and what a client does about the rest. enumerated is stated in full, deferred is fetched once per choice, refine is asked again with values, and live is asked on every request; portable-check names a constraint only the server checks. In contract 4, deferred is an object holding its fetch template, and live also marks a key a runtime access answer may lock or leave out.

Read more Markers, Contract 4. Decisions A list left out for size is deferred, not refined, Static by default, runtime by declaration, Contract 4: fewer keywords, nothing new on the wire.

Part of Surface API; see the full explainer.