What a key goes through A line from values sent to storage: access, then coerce and accept, refine and validate, prepare, and commit, with a computed key filled at the end of accept and a dry run stopping before commit.
values sent
access
The permission, then
the access answers,
asked before anything
is read or written.
accept()
validate()
prepare()
commit()
coerce
'7' becomes 7 for
an integer, by the
Tool API's table;
anything ambiguous
is left for a
constraint.
accept
Defaults, then
stored, then sent.
Absent keeps,
null clears. A
locked key keeps
what is stored; an
unknown key is
refused.
refine
Static refiners
and declared rules
first, then
runtime ones. Each
only narrows.
validate
Constraints,
against the keys
as refined for
these values.
Refusals by
pointer and code.
prepare
Storage lays the
values out and
checks its own
schema. No side
effects.
commit
Writes the
prepared artifact:
the only stage
with side effects.
storage
A computed key is filled
here, last, from its sources'
accepted values.
A dry run stops here:
everything prepared,
nothing written.
What a key goes through From values sent to storage: access, then coerce and accept, refine and validate, prepare, and commit, with a computed key filled at the end of accept and a dry run stopping before commit. values sent
access
The permission, then the access answers,
asked before anything is read or
written.
accept()
coerce
'7' becomes 7 for an integer, by the
Tool API's table; anything ambiguous is
left for a constraint.
accept
Defaults, then stored, then sent. Absent
keeps, null clears. A locked key keeps
what is stored; an unknown key is
refused.
A computed key is filled here, last,
from its sources' accepted values.
validate()
refine
Static refiners and declared rules
first, then runtime ones. Each only
narrows.
validate
Constraints, against the keys as refined
for these values. Refusals by pointer
and code.
prepare()
prepare
Storage lays the values out and checks
its own schema. No side effects.
A dry run stops here: everything
prepared, nothing written.
commit()
commit
Writes the prepared artifact: the only
stage with side effects.
storage
Every door hands its values to one pipeline: accept() coerces and merges them, validate() refines the keys for those values and then checks them, prepare() rehearses the write, and commit() makes it. Only commit has side effects, so a dry run is the pipeline stopped before it; a computed key is filled at the end of accept, from what its sources were accepted as.
Read more The pipeline , Transformations , Computed keys . Decisions Absent keeps, null clears , One coercion table, the Tool API's , A computed key is a pure function of its sources .