CX · Reference guideux
PlaygroundDownloadsAboutv0.18.0-pre.1

ux

The SEMANTIC CORE of the UX projection (EXPERIMENTAL x/ tier; #787): the vocabulary, the fragment addressing, the validation, the three projections (command→form, query→table, feature-grammar→form/columns), the hint claims, the patch algebra a live feed lowers onto, and the surface document's routing correspondence, and the automations plane's law — the ux:automate gate, the closed pick-lists, the server's fill → validate → simulate build and the fold of the tenant's automation stream (P0-130). It contains NO RENDERER and imports no markup library: cx-x/ux-web lowers a semantic tree to HTML/htmx and cx-x/ux-tui lowers the same tree to a terminal, and neither is privileged. Renderer-private intent — swap modes, out-of-band targets, SSE endpoints — is refused on semantic elements and lives instead in the render context document a renderer reads for itself; a region declares a LOGICAL feed name and an action declares the element path it AFFECTS. Fragment identity is exactly (route, feature instance, element path) — theme, locale, actor and data are content, never identity — and content-of is the normal form on which two renderings are asserted to agree.

ux:frag

[$ux:frag] ($route::string $feature::string $path::string) -> element — Build a fragment address from its three identity inputs; its strict canonical bytes are the identity.

ux:frag-address

[$ux:frag-address] ($f::element) -> string — The Tier-1 content address of a fragment address, tagged sha2-256:<hex> like every other address in the suite.

ux:frag-id

[$ux:frag-id] ($f::element) -> string — The short selector-safe spelling of an address: cx- plus the first 16 hex chars of its sha2-256 — a derived rendering, never a second identity.

ux:frag-id-of

[$ux:frag-id-of] ($repr::string) -> string — The DOM id derived from an already-computed canonical form — byte-identical to frag-id, and half the canonicalization, which measurement showed dominates rendering.

ux:frag-repr

[$ux:frag-repr] ($f::element) -> string — The full readable canonical form, so goldens stay diffable and clients can recover the address.

ux:path-step

[$ux:path-step] ($base::string $step::string) -> string — Append one step to an element path.

ux:row-step

[$ux:row-step] ($base::string $key::any) -> string | () — A collection row's path step, keyed by the declared row key; absence in yields absence out, because positional row identity is never minted.

ux:vocabulary

[$ux:vocabulary] () -> [sequence string] — The semantic element set the projection emits — surface-neutral, assuming no hover, pointer, CSS-shaped layout, or renderer transport.

ux:in-vocabulary

[$ux:in-vocabulary] ($n::string) -> bool — Is an element name a member of the semantic vocabulary?

ux:tones

[$ux:tones] () -> [sequence string] — The closed tone set for a badge — semantic meanings, never colors; each renderer decides what a tone looks like.

ux:valid-tone

[$ux:valid-tone] ($t::string) -> bool — Is a tone name a member of the closed tone set?

ux:renderer-private-attrs

[$ux:renderer-private-attrs] () -> [sequence string] — The attribute names a semantic element may NOT carry — each one a renderer's private concept; a tree carrying one is a tree only that renderer can honor.

ux:feed-binding

[$ux:feed-binding] ($rctx::any $name::string) -> element | () — The render context's binding for one logical feed name: its endpoint and event. Shared by every renderer, because both are clients of the same surface.

ux:swap-mode

[$ux:swap-mode] ($rctx::any $affects::string) -> string — The swap mode declared for one affects= path, else the context default, else outerHTML. A renderer with no notion of swap modes never calls it.

ux:binding-refusals

[$ux:binding-refusals] ($el::any $rctx::any) -> [sequence element] — Refuse a live= naming a feed the render context does not bind — a region that silently is not live passes every server-side gate and then never updates.

ux:refusals-of

[$ux:refusals-of] ($el::any) -> [sequence element] — Every refusal in one semantic subtree, collected before any lowering — the SHARED gate, so a tree one renderer accepts and another rejects cannot exist.

ux:joined

[$ux:joined] ($a::any $b::any) -> [sequence element] — Read two refusal sequences back as one flat node-set.

ux:seq-child

[$ux:seq-child] ($el::any) -> bool — Is this child a SEQUENCE rather than an element? A [?for] in an element body yields one sequence-valued child, and every tree walk must see through it.

ux:descend

[$ux:descend] ($el::any $ctx::map) -> map — The fragment context an element's children see: a placed element contributes its author-assigned id as the element-path step, and the render context rides along untouched.

ux:ctx-at

[$ux:ctx-at] ($ctx::map $path::string) -> map — The same fragment context at a different element path.

ux:ctx-frag

[$ux:ctx-frag] ($ctx::map) -> element — The fragment address a context currently denotes.

ux:affects-frag

[$ux:affects-frag] ($el::any $ctx::map) -> element | () — The fragment an action or form declares that it updates — DERIVED, so a renderer's target cannot drift from the identity it minted for the target.

ux:str-or

[$ux:str-or] ($v::any $dflt::string) -> string — An absent attribute's default — NOT ?else over [$string], which never fires because the empty string exists.

ux:label-of

[$ux:label-of] ($el::any) -> string — An element's display label: its label= attribute when present, else its text.

ux:label-of-name

[$ux:label-of-name] ($n::string) -> string — Derive a human label from a param or verb name — the ruled degradation when no documentation supplies one.

ux:level-of

[$ux:level-of] ($el::any) -> string — A heading's level as a literal name, defaulting to 2 — read as a string because a cast would RAISE on level=abc and escape the refusal contract.

ux:child-elements

[$ux:child-elements] ($el::any $n::string) -> [sequence element] — The child ELEMENTS named n. NOT $el/n: a named child step is a field read and ATOMIZES to the child's value on a single match, so [$first $el/n] returns a string for a one-member collection and an element for a two-member one — a difference every two-row fixture hides.

ux:absent

[$ux:absent] ($x::any) -> bool — Is this absence rather than an element? NOT [not [$exists x]]: $exists is false for a single element taken with [$first]/[$nth] as well as for absence, so it cannot tell found-one from found-none — the most load-bearing distinction a tree walk makes. [$count] can.

ux:first-child

[$ux:first-child] ($el::any $n::string) -> element | () — The first child element named n, or absence. NOT for a PARSED DOCUMENT: [$cx:parse] returns a document node the child axis does not traverse, even though [$count] reports 1 — read those with the descendant axis.

ux:has-str

[$ux:has-str] ($seq::any $s::string) -> bool — Membership of a string in a sequence of stringables.

ux:hidden-fields

[$ux:hidden-fields] ($views::any) -> [sequence string] — The fields a noun's [views] declares hidden by default — presentation only; empty when there is no declaration (composition spec §4.5, RULED: VG-1).

      [?lib 'cx-platform/ux' as=ux]
[$ux:hidden-fields [views [sort field=total] [hidden field=note] [hidden field=internal-ref]]]
    
      note
internal-ref
    

ux:sort-fields

[$ux:sort-fields] ($views::any) -> [sequence string] — The fields a noun declares [sort]able, in declaration order — the order a surface offers them.

ux:facet-fields

[$ux:facet-fields] ($views::any) -> [sequence string] — The fields a noun declares [facet]able.

ux:ordered-by

[$ux:ordered-by] ($views::any $chosen::string) -> bool — Whether a collection is ORDERED under this declaration and chosen sort: a declared default order, or a chosen sort the noun declares — what an honest [ux:pager ordered=…] reads (P0-60), decidable from the grammar.

      [?lib 'cx-platform/ux' as=ux]
([$ux:ordered-by [views [sort field=total] [default-order field=total dir=desc]] ""], [$ux:ordered-by [views [sort field=total]] ""], [$ux:ordered-by [views [sort field=total]] "total"], [$ux:ordered-by () ""])
    
      (true, false, true, false)
    

ux:sort-of

[$ux:sort-of] ($views::any $name::string $label::string $base-href::string $chosen::string) -> element — The [ux:sort] a surface offers over a noun — exactly the declared sort fields, in declared order, each option a URL (P0-62).

      [?lib 'cx-platform/ux' as=ux]
[$ux:sort-of [views [sort field=placed-at] [sort field=total] [hidden field=note]] "sort" "Sort by" "/orders" "total"]
    
      [ux:sort name=sort label='Sort by' [ux:sort-option value=placed-at label='Placed at' href='/orders?sort=placed-at' selected=false] [ux:sort-option value=total label=Total href='/orders?sort=total' selected=true]]
    

ux:facet-of

[$ux:facet-of] ($views::any $rows::any $field::string $label::string $base-href::string $chosen::string) -> element — The [ux:facet] over one declared facet field, counted from the rows (P0-61): the selected value's URL removes it, a zero-count value appears only when selected, and an undeclared field is refused as a value.

      [?lib 'cx-platform/ux' as=ux]
[?let [= $views [views [facet field=status]]]
      [= $rows ([order id=o-1 status=late], [order id=o-2 status=on-time], [order id=o-3 status=late])]
  ([$ux:facet-of $views $rows "status" "Status" "/orders" "late"], [$ux:facet-of $views $rows "customer" "Customer" "/orders" ""])]
    
      ([ux:facet name=status label=Status [ux:facet-value value=late label=late count=2 selected=true href='/orders'] [ux:facet-value value=on-time label=on-time count=1 selected=false href='/orders?status=on-time']], [ux-refusal code=ux-facet-undeclared field=customer])
    

ux:group-fields

[$ux:group-fields] ($views::any) -> [sequence string] — The fields a noun declares [group]able, in declaration order — the order a surface offers them, as with [sort].

ux:group-dir

[$ux:group-dir] ($views::any $field::string) -> string — The order the GROUPS of one declared grouping field come in: its declared dir=, asc by default, '' when the field is not [group]-declared.

ux:within-group-order

[$ux:within-group-order] ($views::any $chosen::string) -> string — The field the rows sit in INSIDE one group: the chosen sort= when the noun declares it sortable, else the noun's [default-order] — the ungrouped collection's own order applied per partition, which is why §4.5 declares no child for it.

ux:within-group-dir

[$ux:within-group-dir] ($views::any $chosen::string) -> string — The direction that within-group order runs in: the [default-order]'s dir= (asc by default), asc for a chosen sort, '' when the collection has no declared order at all.

ux:group-of

[$ux:group-of] ($views::any $rows::any $field::string $label::string $chosen::string) -> element — The [ux:group] over one declared grouping field (ux.md §10.6): the collection ARRANGED rather than narrowed — every row kept, the groups in the declared dir=, the rows inside one in the within-group order, and an undeclared field refused as a value.

      [?lib 'cx-platform/ux' as=ux]
[?let [= $views [views [sort field=total] [group field=status dir=desc] [default-order field=placed-at dir=asc]]]
      [= $rows ([order id=o-1 status=late placed-at=3 total=9], [order id=o-2 status=on-time placed-at=1 total=2], [order id=o-3 status=late placed-at=2 total=5])]
  ([$ux:group-of $views $rows "status" "Status" ""], [$ux:group-of $views $rows "region" "Region" ""])]
    
      ([ux:group name=status label=Status [ux:group name=on-time label=on-time [order id=o-2 status=on-time placed-at=1 total=2]] [ux:group name=late label=late [order id=o-3 status=late placed-at=2 total=5] [order id=o-1 status=late placed-at=3 total=9]]], [ux-refusal code=ux-group-undeclared field=region])
    

ux:has-address

[$ux:has-address] ($el::any) -> bool — Does this element own a distinct fragment address? A property of the semantic tree, not of a renderer, so both renderers mint from one answer.

ux:child-ctx

[$ux:child-ctx] ($el::any $ctx::map) -> map — THE one definition of how an element path grows: a region re-roots feature and path, a form steps by its verb, a keyed row by its key, a placed element by its author-assigned id, and structure leaves the path alone.

ux:address-pairs

[$ux:address-pairs] ($el::any $ctx::map) -> [sequence element] — Every (DOM id, readable address) pair a semantic tree will mint — taken from the semantic tree, so the check runs once and is shared rather than re-walking each renderer's larger output. A pair also carries address=, the author's id= as written, when the element is addressed by one, so a refusal over these pairs can name its subject in the author's own words.

ux:address-collisions

[$ux:address-collisions] ($el::any $ctx::map) -> [sequence element] — Refuse a duplicate DOM id — a hash-truncation collision or a reused address — never silently disambiguate. Detection is three counts and O(n log n); the pairwise scan that names the offenders runs only when a count disagrees, which is a path that refuses the render anyway.

ux:dangling-affects

[$ux:dangling-affects] ($el::any $ctx::map) -> [sequence element] — Refuse an affects= naming a path no element in the same tree mints. Without it a swap targets an id that does not exist and the page silently does not update — which looks like a caching problem and is the worst symptom an addressing mistake can have.

ux:content-of

[$ux:content-of] ($el::any) -> element — The COMMON CONTENT NORMAL FORM: content and structure with presentation stripped. Each renderer supplies a readback from its own output to this form, and the fixtures assert all three canonical-equal.

ux:content-repr

[$ux:content-repr] ($el::any) -> string — The canonical bytes of the content normal form — what two renderings must agree on.

ux:form

[$ux:form] ($source::any $verb::string $opts::map) -> element | [err …] — Project a command onto a semantic form. Reaches BOTH of cx's declaration systems through the one entry, dispatching on what the source IS: module source text projects a [?def] whose [effects] clause is present (fields from the param list, required from the non-defaulted positionals); a [feature …] document or a composed [grammar …] projects a [verb …] from its declared intent parameters, falling back to the noun it writes. Labels degrade to name-derived either way; derived at render time, never materialized. Refuses as a value: ux-no-such-command, ux-not-a-command, ux-no-such-verb, ux-verb-observe, ux-source-unreadable.

ux:form-error

[$ux:form-error] ($message::string) -> element — Render a command refusal as a form error, carrying the refusal's own message verbatim — the UX layer never restates a rule.

ux:feature-noun

[$ux:feature-noun] ($feature::any $noun::string) -> [sequence element] — The noun a feature declares under that name — public so a surface can project one more instance of a repeating group without re-deriving the grammar.

ux:feature-columns

[$ux:feature-columns] ($feature::any $noun::string) -> [sequence [sequence string]] — A noun's field names as column names, in the domain author's declaration order. Nests ONE level — a [?for] in an element body yields one sequence-valued child — so an absent noun reads as absence, not as an empty name.

ux:schema-address

[$ux:schema-address] ($schema::any) -> string — The E2 content address of a DECLARED schema — byte-identical to what register-schema binds. Takes a SCHEMA, never a value: an address inferred from one sample carries that sample's cardinality and cannot serve as a claim key.

ux:claim-key

[$ux:claim-key] ($addr::string $path::string) -> string — The composite claim-key spelling: the tagged schema address immediately followed by the CXPath — a derived spelling of the pair, never a third identity.

ux:hint-for

[$ux:hint-for] ($hints::any $addr::string $path::string $type::string) -> string | () — Resolve one hint type for a keyed node, longest matching path first; absence is a normal answer and the default projection applies.

ux:table

[$ux:table] ($rows::any $opts::map) -> element — Project a query result onto a semantic table — columns derived from the row schema, rows keyed only by a DECLARED key, nested collections rendered as nested tables, and the row container addressed so a live patch has somewhere to land.

ux:rows-container-step

[$ux:rows-container-step] () -> string — The element-path step a projected table's row container takes — the address a live patch appends into.

ux:rows-container-path

[$ux:rows-container-path] ($table-path::string) -> string — The row container's element path for a table placed at the given path.

ux:row-columns

[$ux:row-columns] ($schema::any $rowname::string) -> [sequence string] — A row type's scalar attribute names in schema order — a column exists because a value does.

ux:key-for

[$ux:key-for] ($opts::map $rowname::string) -> string | () — The DECLARED key attribute for one row type, or absence — never guessed from an attribute named id.

ux:cell-text

[$ux:cell-text] ($r::any $attr::string) -> string — One attribute's value as text through the canonical scalar printer, so a decimal renders at the precision it was stored at.

ux:feed-ops

[$ux:feed-ops] ($frames::any $rows::any $ctx::map $opts::map) -> [sequence element] — Lower a live-modes ∂ script onto the SEMANTIC PATCH ALGEBRA — insert / update / remove / repaint over a keyed collection addressed by element path, never by a renderer's swap syntax. retract carries only a position, so the current row list recovers its key, and an unkeyed collection collapses every frame to a repaint.

ux:feed

[$ux:feed] ($feature::string $path::string $name::string $body::any) -> element — The live region: it names a LOGICAL FEED, and the endpoint and event live in the render context — so one declaration reaches a browser and a terminal without either transport being spelled in the tree.

ux:routes-of

[$ux:routes-of] ($surface::element) -> [sequence element] — A surface document's route table as data: path, feature, instance name, and template per route.

ux:duplicate-instances

[$ux:duplicate-instances] ($surface::element) -> [sequence element] — Refuse composing the same feature instance twice on one route — no silent ordinals, because the instance name is a fragment-identity input.

ux:fragment-paths

[$ux:fragment-paths] ($surface::element) -> [sequence string] — The fragment endpoints a surface's routes declare — kept INSIDE the route/resource correspondence check rather than exempted from it, because an unrouted fragment endpoint is as much a page outside the composition as an unrouted page.

ux:service-refusals

[$ux:service-refusals] ($surface::element $served::any) -> [sequence element] — Refuse any drift between a surface document's routes and the resource paths its [?http-service] registers, in both directions.

ux:surface-verb-refusals

[$ux:surface-verb-refusals] ($surface::element $features::any) -> [sequence element] — The static half of verb coverage at compose time (W16-b): every act verb the composed features declare is offered by some route or declared not-offered with a why — a why-less declaration does not account for its verb.

ux:check-surface

[$ux:check-surface] ($surface::element $served::any $features::any) -> true | [err …] — The compose-time gate over a surface document, its service's resource table, and the feature documents it composes (verb accounting is part of composing at all — W16-b).

ux:currency-symbol

[$ux:currency-symbol] ($c::string) -> string — The display symbol for an ISO currency code (USD/EUR/GBP/JPY); an unknown code falls back to the code itself plus a space, never an error.

ux:group-digits

[$ux:group-digits] ($d::string) -> string — Insert thousands separators into a digit string, right to left ('1234567' -> '1,234,567').

ux:money-text

[$ux:money-text] ($v::string $cur::string) -> string — Render a decimal carrier and its currency as display text (sign, symbol, grouped integer part, two-place fraction) — never routed through a float.

ux:rating-fifths

[$ux:rating-fifths] ($v::string) -> int — A 0..5 rating carrier as a whole number of filled marks, rounding half-up and clamping to 5.

ux:rating-text

[$ux:rating-text] ($v::string) -> string — The marks AND the number, always together (P0-66): filled/empty stars followed by the numeric value, shared by every renderer.

ux:formatted

[$ux:formatted] ($el::any $raw::string) -> string — The ONE place a format= hint turns a carrier into display text — money and rating dispatch here; anything else passes through raw.

ux:allowed-attrs

[$ux:allowed-attrs] ($n::string) -> sequence — The closed attribute list for one vocabulary member — the authority the attribute-closure gate checks against; an unknown member yields the empty sequence.

ux:own-attr-names

[$ux:own-attr-names] ($el::any) -> sequence — The element's OWN attribute names, enumerated through a fixed-depth rooted carrier scan (the binding surface has no attribute wildcard).

ux:act-verbs

[$ux:act-verbs] ($feature::any) -> sequence — The feature's invokable verbs — every [verb] whose effect is 'act', by the P0-17 discriminator.

ux:control-verbs

[$ux:control-verbs] ($el::any) -> sequence — Every verb a semantic tree offers as a control (action, form, or verb-carrying quantity), distinct — twenty cards offering one verb are one affordance.

ux:verbs-uncovered

[$ux:verbs-uncovered] ($offers::any $el::any) -> sequence — The verbs a route declares it offers that its rendered tree does not offer as a control — each as a ux-verb-uncovered refusal.

ux:selection-withdrawn

[$ux:selection-withdrawn] ($feature::any) -> sequence — The verbs an INSTANCE BINDING withdrew from this deployment (composition spec §4.3a): [$xap:instantiate] carries a binding's SELECT onto the effective feature document as a [selection …] child, and a withdrawn verb is refused at ρ before the PEP, so no route can offer it and the surface must not be asked to. A withdrawal states a why for the same reason a surface-side [not-offered] does — a reasoned absence is a state a deployment can be held to.

ux:verbs-unaccounted

[$ux:verbs-unaccounted] ($feature::any $offered::any $not-offered::any) -> sequence — Surface-level completeness: every act verb the feature declares that no route offers and no [not-offered] accounts for — the missing-affordance class equivalence cannot see (L5).

ux:found

[$ux:found] ($x::any) -> bool — True iff the value is present — delegates to [$present] (#854); the retired exists-or-named workaround's public name, kept for its callers.

ux:collisions-with

[$ux:collisions-with] ($pairs::any) -> sequence — Address-collision refusals over a precomputed address-pair set — empty when every pair and every id is distinct.

ux:err-refusals

[$ux:err-refusals] ($el::any) -> sequence — Every [err …] spliced into a semantic tree, surfaced as a ux-err-in-tree refusal — an err embedded in a document has already lost the property that makes it a refusal.

ux:dangling-affects-with

[$ux:dangling-affects-with] ($el::any $ctx::map $pairs::any) -> sequence — Every affects= naming a path neither the tree mints nor (for a fragment) the render context declares — the silently-lands-nowhere class, refused.

ux:declared-containers

[$ux:declared-containers] ($rctx::any) -> sequence — The container paths a render context declares ([swap]/[fragment] entries) — what a fragment's affects= is allowed to aim at.

ux:committed

[$ux:committed] ($message::string) -> element — A success notice for a committed intent — the caller's message in a tone=ok notice; the other half of form-error, owed by the same reasoning.

ux:entered

[$ux:entered] ($opts::map $name::string $dflt::string) -> string — The value the operator already typed for one control (from opts.values), or the default — what keeps a refused form from losing its input.

ux:field-error

[$ux:field-error] ($opts::map $name::string) -> string — The refusal message that belongs to ONE control (from opts.errors), or the empty string — the message renders next to its field, not in a banner.

ux:reference-select

[$ux:reference-select] ($f::any $noun::string $opts::map) -> element — A reference field as a required ux:select over the referenced noun's rows; a missing option set yields an empty select (an empty catalogue is a legitimate state).

ux:options-for

[$ux:options-for] ($opts::map $noun::string) -> sequence — The caller's option set for one noun ([options for=… [option value=… label=…]…]) as ux:option elements; absent set yields the empty sequence.

ux:repeating-group

[$ux:repeating-group] ($f::any $ref::any $feature::any $opts::map) -> element — The nested WRITE case: a repeat=true ux:group over the referenced noun's fields, one rendered instance per surviving wire index.

ux:instance-indices

[$ux:instance-indices] ($opts::map $group::string) -> sequence — WHICH group instances to re-render, by their own wire index (gaps preserved — indices are identity, so removing lines.0 must not renumber lines.1); an unentered form mints index 0.

ux:index-part

[$ux:index-part] ($s::string $n::int) -> string — The index segment of a grouped wire name ('lines.2.sku' at the group prefix length -> '2'); too-short names yield '0'.

ux:group-instance

[$ux:group-instance] ($f::any $ref::any $feature::any $opts::map $i::int) -> element — One instance of a repeated noun as a ux:card of controls named <group>.<i>.<field> — the index keeps two instances from collapsing on the flat form wire.

ux:intent-params

[$ux:intent-params] ($v::any) -> sequence — The parameter names a verb's [intent [do …]] grammar declares — the verb's real signature; empty when the verb has not declared one (the noun remains the fallback).

ux:feature-card

[$ux:feature-card] ($feature::any $spec::any $row::any $opts::map) -> element — One row as a ux:card, driven by a route-level [card …] spec: media, title, subtitle, the shows= fields that carry values (empty ones drop), and the buy action.

ux:row-attr

[$ux:row-attr] ($row::any $name::string) -> string — One attribute of a row as a string, or '' when absent or unnamed — the total accessor card projection is built on.

ux:noun-field-view

[$ux:noun-field-view] ($ns::any $fname::string $row::any $opts::map) -> element — ONE declared field as a labelled ux:field — label from the declaration (or derived from the name), format from the hint claim keyed by (noun address, path), which is why money is money everywhere.

ux:feature-fields

[$ux:feature-fields] ($feature::any $noun::string $row::any $skip::any $opts::map) -> sequence — Every declared field of a noun projected as labelled values, minus the skip list and the value-less — the detail page's specification block, driven by the noun so a new attribute gains a row here and nowhere else.

ux:format-for

[$ux:format-for] ($hints::any $addr::string $col::string) -> any — The format= hint claim for one column, keyed by (schema content-address, /column path) — absent when no claim speaks for it.

ux:layout-find

[$ux:layout-find] ($layout::any $id::string) -> element | () — The [placed …] element carrying this surface-doc id, anywhere in the layout document, or absence — ids are unique per document (P0-16).

ux:layout-ids

[$ux:layout-ids] ($layout::any) -> [sequence string] — Every placed id in the layout document, document order.

ux:layout-parent-id

[$ux:layout-parent-id] ($layout::any $id::string) -> string — The id of the placed element holding this one; '' means it sits at the layout root.

ux:layout-successor

[$ux:layout-successor] ($layout::any $id::string) -> string — The id of the placed sibling FOLLOWING this one, or '' when it is last — what makes the inverse-pair table (P0-108) computable: put-it-back is insert-before-what-followed.

ux:layout-hint

[$ux:layout-hint] ($layout::any $id::string $hint::string) -> string — The SURFACE-LEVEL value of one hint on one placed element, or '' when it carries none and the inherited resolution applies (P0-107) — also the prior value the set-hint inverse restores.

ux:component-known

[$ux:component-known] ($components::any $name::string) -> bool — Is a component name in the resolved registry? Placeable is a cascade-resolvable component name, never raw markup (P0-105).

ux:component-container

[$ux:component-container] ($components::any $name::string) -> bool — Is a component declared container=true — allowed to hold placed children (a wrap target, a place/move parent)?

ux:layout-refusals

[$ux:layout-refusals] ($layout::any $cmd::any $components::any) -> [sequence element] — Every refusal one layout command earns against the FULL document: address-miss (P0-28), id-collision (P0-16/P0-105), unknown or non-container component, cycle and incoherent position (P0-29), unknown command.

ux:layout-apply

[$ux:layout-apply] ($layout::any $cmd::any $components::any) -> element | [err …] — Apply ONE layout command against the full document (P0-29) — pure structural surgery touching only what the command addresses (P0-26); the amended document, or one [err] naming every refusal. The caller journals, stamps and publishes.

ux:layout-apply-batch

[$ux:layout-apply-batch] ($layout::any $cmds::any $components::any) -> element | [err …] — A P0-27 batch, atomic: all-or-nothing, one journal entry at the boundary; the first refusal refuses the batch whole.

ux:layout-param

[$ux:layout-param] ($layout::any $id::string $param::string) -> string — The value of one content param on one placed element, or '' when it carries none and the registry default applies (P0-111) — the prior the set-param inverse restores.

ux:component-params

[$ux:component-params] ($components::any $name::string) -> [sequence element] — One registry entry's [param name= default= carrier=] declarations — the component's editable content surface (P0-113).

ux:component-variants

[$ux:component-variants] ($components::any $name::string) -> [sequence element] — One registry entry's [variant name= options=] axes — closed option sets written as ordinary surface-level hints (P0-107/P0-113).

ux:component-accepts

[$ux:component-accepts] ($components::any $name::string) -> [sequence string] — The component names a container may hold (P0-113); absent accepts= means anything, and a place or move of an unaccepted child refuses with ux-layout-not-accepted — the rule that stops an editor's reasonable guess from producing an invalid tree.

ux:component-fixed

[$ux:component-fixed] ($components::any $name::string) -> bool — Is a component declared fixed — restylable but never moved, removed or wrapped (load-bearing chrome, e.g. an affects= target)?

ux:layout-inverse

[$ux:layout-inverse] ($layout::any $cmd::any) -> [sequence element] — The P0-108 inverse-pair table, computed against the PRE-state: move↔move-back, set-hint↔set-hint-prior, place↔remove, remove↔the reconstructing place batch, wrap↔(move the child back THEN remove the empty wrapper) as one P0-27 batch.

ux:op-replace

[$ux:op-replace] ($path::string $el::any) -> element — A replace operation over an addressed element path (the P0-44 algebra reaching non-row elements, P0-83) — each renderer lowers it for itself: the browser swaps out-of-band, a terminal re-reads.

ux:automation-skeletons

[$ux:automation-skeletons] () -> [sequence string] — The closed set of automation skeletons an author may pick (composition.md §3.10, RULED: AA-2): on-change-act, on-change-approve, on-change-check, on-schedule-act.

ux:claims-caps

[$ux:claims-caps] ($cmap::any $claims::any) -> [sequence string] — The capabilities the §6.5 claims mapping grants a session (P0-50): every [grant cap=] of every [rule] whose [when …] predicates all hold over the session's claims — equality and membership only, monotone, deny by default. The automations plane is gated by ux:automate, never by ux:edit (P0-130).

ux:skeleton-slots

[$ux:skeleton-slots] ($sk::any) -> [sequence element] — A skeleton's distinct [slot name= kind=] markers in first-use order over its [flow] then its [on] template — the order fill reads them.

ux:automation-picklists

[$ux:automation-picklists] ($sk::any $ctx::map) -> element — The plane's form for one skeleton: a [pick slot= kind=] per slot, an act, field, role or principal slot a CLOSED list of [option …] from the context's acts, fields, roles and principals (RULED: AA-4), a duration or value slot open=true — typed by fill, not listed.

ux:automate-refusals

[$ux:automate-refusals] ($cmd::any $caps::any) -> [sequence element] — The command gate, the PEP's recheck: () when the session may issue this ux:automate or ux:retire-automation, else every refusal row — an unknown command, the ux:automate claim missing, a command carrying anything but its skeleton= and its one [answers …] (a flow document above all).

ux:automation-simulation

[$ux:automation-simulation] ($sk::any $an::any $ctx::map) -> element — simulate over the skeleton's path table, filled from the answers (RULED: AA-6): [simulation status= path= [picture …] [flow-overlay …]] — the run status the declared path reaches and the simulated overlay the studio shows before the commit.

ux:automation-publish

[$ux:automation-publish] ($cmd::any $sk::any $ctx::map) -> element — The server's build of one ux:automate (P0-130): the gate, the skeleton, the closed pick-lists, then fill with as= the session principal, validate against the executing environment, and simulate over the path table, which must reach :done. Answers the [automation-published skeleton= flow= [answers …] [on …]] entry the caller appends, actor-stamped, to the tenant's automation stream (RULED: AA-5); every refusal is a value.

ux:automation-document

[$ux:automation-document] ($sk::any $entry::any) -> element — The flow document an [automation-published …] entry names, rebuilt from its skeleton, answers and binder — the bytes the caller serves from [docs] by the entry's flow= address.

ux:pref-stream

[$ux:pref-stream] ($ctx::map) -> any — The stream a viewer's durable view preferences live in, prefs:<principal>, derived from the server's context (P0-131, P0-133); refused ux-pref-unattributed when the context names no principal or the anonymous floor.

ux:view-stream

[$ux:view-stream] ($ctx::map) -> any — The stream an entity's shared saved views live in, view:<entity>, derived from the surface's server-side context (P0-131); refused ux-view-unscoped when it names none.

ux:view-command-refusals

[$ux:view-command-refusals] ($cmd::any $noun::any $caps::any $ctx::map) -> [sequence element] — () when the session may issue this ux:set-pref / ux:clear-pref / ux:save-view / ux:drop-view over this noun, else every refusal row: a scope named in the payload, the command's shape, the ux:save-view claim or an attributed principal, and every field the noun's [views] does not declare (P0-132 to P0-134).

ux:pref-entry

[$ux:pref-entry] ($cmd::any $noun::any $caps::any $ctx::map) -> element — The server's build of ux:set-pref / ux:clear-pref: the gate, then the [pref-set surface= …] or [pref-cleared surface=] entry the caller appends, actor-stamped, to the viewer's prefs: stream (P0-132).

ux:view-entry

[$ux:view-entry] ($cmd::any $noun::any $entries::any $caps::any $ctx::map) -> element — The server's build of ux:save-view / ux:drop-view: the gate, then the [view-saved name= noun= …] or [view-dropped name=] entry the caller appends to the entity's view: stream; a drop names a view in force, else ux-view-unknown (P0-132).

ux:prefs

[$ux:prefs] ($entries::any) -> [sequence element] — The fold of a prefs: stream (P0-135): the latest [pref-set] per surface no later [pref-cleared] removes, oldest first. Reads bare entries and journal [entry … [event …]] rows alike.

ux:pref-for

[$ux:pref-for] ($entries::any $surface::string) -> any — The one surface's preference in force in a prefs: stream, or absence.

ux:saved-views

[$ux:saved-views] ($entries::any) -> [sequence element] — The fold of a view: stream (P0-135): the latest [view-saved] per name no later [view-dropped] removes, oldest first. Reads bare entries and journal [entry … [event …]] rows alike.

ux:view-params

[$ux:view-params] ($pref::any $url::map) -> map — The preference as the default the URL overrides (P0-136): the URL's sort, dir, page-size and hidden laid over the preference's; sort and dir travel together, so a URL sort with no dir does not inherit the preference's dir.

ux:view-noun

[$ux:view-noun] ($saved::any $noun::any) -> element — A saved view as the derived noun it is (P0-136): the source noun's fields, [from '<noun>'], and a [views] whose sort is the view's order (as its default order) and whose hidden fields are the view's.

ux:view-rows

[$ux:view-rows] ($saved::any $rows::any) -> [sequence element] — A saved view's read (P0-136): the rows every [facet] admits, in the view's order, input order when it names none. Hidden fields are presentation, applied where the projection is; never a filter on what a principal may see.

ux:automations

[$ux:automations] ($entries::any) -> [sequence element] — The fold of the tenant's automation stream (RULED: AA-5): the [automation-published …] entries no later [automation-retired flow=] retires, one per flow address, oldest first. Reads bare entries and journal [entry … [event …]] rows alike.

ux:automation-retire

[$ux:automation-retire] ($cmd::any $entries::any $caps::any) -> element — ux:retire-automation, the inverse of ux:automate: the gate, then the automation flow= names must be in force; answers the [automation-retired flow=] entry the caller appends.

ux:adopt-skeleton

[$ux:adopt-skeleton] ($entry::any $sk::any $ctx::map) -> element — A new skeleton version adopted by replaying a published automation's answers through the whole publish build (P0-120): [adoption class=:clean] when it fills to the same flow and trigger, :drifted when what runs changed (with the entry it replaces as [was …]), :refused with the build's refusal as [why …] — a decision for its owner, never dropped. A dry run: nothing is appended.