The four markers Four 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 markers enumerated, 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 .