Skip to main content

AUP is a semantic tree

AUP is not a CSS framework and not a page template language. You author a semantic tree of named node types. A target device reports what it can render; the runtime degrades or refuses the rest.

This deck is a web slideshow tour: one Markdown record, slides: true, hosted on Web Device docs. It shows what a deck path can host—not ordinary article document caps.

Document caps vs deck caps

Cap profileWhat it means on this site
documentOrdinary articles: native subset, partial time, forced degradation for interactive types
deck (DEVICE_CAPS_DECK)This slideshow: document natives plus chart/map/calendar/overlay/canvas/explorer/surface/chat shells
web-fullFull interactive Web (Showcase / apps): session, write paths, multi-window

This deck uses DEVICE_CAPS_DECK (arc#4005 / #4011 / #4012). Human lock (#4006): only rtc and camera-preview are hard excludes; other surfaces ship as readonly + authored data demos. Ordinary articles still degrade chart→table and map→media.

Basic interface

view — native

Portable container. On document, tabs and steps are static UI chrome (panel switch only—no session, no exec).

Install with pnpm install.

Install with npm install.

text — native

Ordinary Markdown body is the main text path. Callouts become text-admonition presentation on document.

Portable copy

This callout is document content. It does not run actions or write AFS data.

media — native

Semantic media node (image path here). Same-site / whitelist rules for frames are separate.

Illustrative documentation asset
Document-target media illustration

input — native

Unbound form control on document. Typing changes only the browser control—no bind, session, or AFS write.

action — native

Navigation-only on document. No exec, no destructive confirm from a static sample.

Open live example contractLabel only — not a navigation target

overlay — deck open shell

Open dialog chrome on this deck (readonly). Dismiss bus / session confirm stay interactive.

FactBoundary
Deck pathpartial open shell (arc#4012)
Ordinary documentstill unsupported → text
Session dismiss / confirm businteractive only

Structure and time

table — native (GFM path)

GFM tables render on the document target. Prefer an author-written table when the page needs data.

FilePurposeWrites data
content.mdContent itemNo
layout.aupPage layoutNo

time — partial

Document reports partial. Display mode is a static snapshot, not a live clock.

No continuous client ticker on this path. Clock/countdown product claims belong to interactive targets after re-verification.

chart — quarterly bar

map — Paris

calendar — August 2026

August 2026
Sun
Mon
Tue
Wed
Thu
Fri
Sat
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14Tour ship
15
16
17
18
19
20
21Review
22
23
24
25
26
27
28
29
30
31

Interactive surface

chat — deck readonly + data

Authored messages only. Input bar is disabled—no session bus, no write (human #4006).

Support samplereadonly
user
Can slides host chat chrome?
assistant
Yes — readonly shells with sample data. Live session stays on interactive targets.

FactBoundary
Deck pathpartial readonly shell
Write / session / agent runtimenot on this tour
Ordinary documentstill unsupported

rtc — excluded (human #4006)

FactBoundary
Deck pathunsupported (hard exclude)
Shared chainunsupported → annotated text
What this deck doesNo RTC / camera-preview demo

Media permissions and peer sessions are not slideshow product demos. camera-preview widget is excluded for the same reason.

explorer — deck static tree

Authored items only—not path-backed AFS browse.

Workspace/docs/aup
  • overview
  • capability-tour-slides
  • README.md/docs/aup/README.md

FactBoundary
Deck pathpartial static shell
Path-backed live AFSinteractive / session only
Pair with afs-liststatic children only on docs

editor — native (experimental)

Document registers an editor renderer as a local textarea. Typing stays in the browser—no IDE, no AFS write-back.

::editor{id="aup-tour-editor" language="json" label="Example snippet" value="{ "ok": true }"}

Markdown attribute strings are not guaranteed to match AUP JSON booleans (readOnly). Prefer JSON/DSL when the prop must be strict.

canvas — deck drawing shell

Host + canvas; progressive enhance enables local pen (no AFS persistence).

FactBoundary
Deck pathpartial shell + local pen enhance
Ordinary documentunsupported → media → text
Persist strokes / multi-userinteractive only

surface — deck host shell

Labeled host region + children. Taxonomy: primitive surface ≠ wm-surface ≠ layout surface dirs.

Resource panelreadonly deck shell

Static surface body — authored children only. No session view selector on this deck.

FactBoundary
Deck pathpartial host shell
Session expand / path browseinteractive only
Confusiondo not rename site chrome as this primitive

afs-list — document (static children)

Document can render list chrome. Path-backed live AFS data is not closed on public docs—use static children only.

  • Static row one — authored as document children, not fetched.

  • Static row two — still not an AFS path proof.

Empty / loading chrome without children is documented on the unit page; this tour only shows the static-children path.

Document-hostable widgets

Widgets are not the 18 cross-device primitives. Deck SSR now registers focused shells for many of them (arc#4012 / #4008 / #4009). Array/object props as JSON strings are coerced (same as chart/map). Nested portal chrome for app-header still needs object props from DSL.

app-header — document shell

Document registers app-header and emits the same .aup-app-header* chrome classes as the interactive path. Nested brand / nav / actions need object props (Showcase / AUP DSL). Markdown directive attributes are always strings, so this slide shows the registered shell only—not a full portal header.

FactBoundary
Document RENDERERSyes (static)
MD live brand/nav/actionsnot — string attrs are not JSON-coerced
Session / search / microBarinteractive / AFS only

Unit page: app-header. Showcase: prim-app-header.

ticker — document static

Document RENDERERS force data-mode="static": children separated by bullets—not a continuous scroll ticker.

Document surface

•

Static children

•

No live scroll on this path

Interactive scroll/flip modes stay on web-full. Unit page: ticker.

broadcast — document static shell

Document RENDERERS treat broadcast as a view-like container: children render, live channel / director wiring does not.

Static broadcast shell — authored children only. No shared channel, no AI director, no live viewer count on document.

Role expansion (live-badge, lower-third, …) is interactive. Unit page: broadcast.

deck — this tour is the host

This record is already a deck: front matter slides: true + layout: slides builds the player. Document reports deck as partial host chrome—not a nested product deck inside each slide.

FactBoundary
HostThis capability-tour record
Authoring## slides, --- dividers, optional media-fill bodies
Nested ::deckNot required for this tour

You are inside the demo. Unit page: deck. Markdown slides guide: markdown-slides.

frame — document partial

Sandboxed iframe via AUP type: "frame". Same trust boundary as embeds: http(s) or allow-listed paths; unknown/unsafe src becomes an error or link fallback.

::embed{url=…} is the Markdown authoring path that often compiles toward frame-shaped nodes. This slide names the widget type explicitly. Document capability is partial. Unit page: frame.

key-value-list — deck shell

Release
Status
Stable
Channel
docs
Caps
DEVICE_CAPS_DECK

Unit page: key-value-list. Showcase: prim-key-value-list.

AUP widget—not the site layout page-breadcrumb chrome. Unit page: breadcrumb.

chip — deck shell

Stable3Deck shellReadonly

Unit page: chip. Dismiss events stay interactive.

pagination — deck static chrome

Buttons disabled—no page events on this tour. Unit page: pagination.

tooltip — deck shell

Hover target (and visible tip below)

Native title + visible hint for deck proof

Unit page: tooltip.

entity-overview — deck shell

Sample entity

Identity

Name
Tour demo
Kind
docs

Caps

Path
deck
Write
no

Unit page: entity-overview.

terminal — deck readonly transcript

arc CLI · readonly
$ arc --version
2.0.0-beta.35
$ arc blocklet check blocklets/arcblock
ok

Not a live PTY / xterm WebSocket. Unit page: terminal.

moonphase — deck shell

Pure math shell (no CDN). Unit page: moonphase.

globe — world markers

comments-surface — deck readonly

Thread samplereadonly
Ada

Readonly comments prove the type hosts on deck.

Grace

Write path and session stay off this tour.

Human #4006: data demo OK; no write. Live article mount is a separate site toggle.

wm — single-panel shell

Panelsingle-panel deck shell

Single-panel window chrome for deck geometry (1280×720). Not multi-window desktop.

Human #4006: single-panel OK; full desktop geometry stays Showcase wm-desktop.aup.

agent — deck readonly (chat alias)

Assistant samplereadonly
user
What can deck host?
assistant
Readonly agent chrome with sample turns—no agent runtime on this tour.

Same shell as chat. No AFS write / agent loop.

wm-surface — same single-panel shell

Surface panelsingle-panel deck shell

Same SSR as wm. Taxonomy: widget wm-surface ≠ primitive surface.

xeyes — static gaze

Mouse tracking stays interactive. Deck hosts the chrome.

searchable-dropdown — closed list

Pick a runtimereadonly shell
Bun
  • Bun
  • Node
  • Workers

Closed list. Filter/onChange stay interactive.

Filter / onChange stay interactive.

afs-stat — label + value

Open PRsreadonly shell
12
Open PRs

afs-preview — path + snippet

READMEreadonly shell
/docs/aup/README.md
# AUP\nSemantic tree. Device reports caps.

afs-dropzone — dashed host

Drop into /inboxreadonly shell
Drop into /inbox/inboxReadonly — ingest stays on interactive UI

Ingest / grant PUT stay off this tour.

natal-chart — planets table

natal-chartreadonly shell
PlanetLongitudeSignDegree in Sign
Sun45.20°Taurus15.20°
Moon120.50°Leo0.50°
Mercury12.00°Aries12.00°

Astrochart CDN stays on web-full.

finance-chart — candle table

finance-chartreadonly shell
TimeOpenHighLowClose
2026-08-121012911
2026-08-1311131012
2026-08-141212.51111.5

TradingView stays interactive.

skills — authored names

skillsreadonly shell
  • issue-audit
  • land
  • verification

Live registry stays off this tour.

text-highlight — marks

text-highlightreadonly shell

Deck can host highlighted phrases without an iframe.

type-block — authored DSL

type-blockreadonly shell
AUP is a semantic tree.

Mode shuffle — iframe type-block runtime stays interactive.

Iframe type-block runtime stays interactive.

hero-widget — title + desc

Capability tourreadonly shell

Readonly host for the WebGL/iframe hero.

Style cube — WebGL/iframe hero stays interactive.

webgl-hero — GPU placeholder

WebGL heroreadonly shell
WebGL hero

GPU scene needs web-full. Deck shows the host, not the shader.

progress-bar-3d — CSS stand-in

Loadreadonly shell

64%

2D CSS stand-in. 3D WebGL bar stays interactive.

photo-story — stills

Platesreadonly shell
Bridge
Bridge
Ridge
Ridge

text-image-expand — pair

text-image-expandreadonly shell
Harbor plate. Expand/hover stays interactive.

Harbor plate. Expand/hover stays interactive.

Static pair — expand/hover stays interactive.

scroll-explainer — stacked steps

How a slide shipsreadonly shell
  1. Author Markdown
  2. Deck SSR shell
  3. Enhance where JS exists

block-revealer — already open

Revealedreadonly shell

Enter/scroll reveal stays interactive. This slide starts open.

post-editor — readonly

Draftreadonly shell

Readonly chrome — publish path stays off this tour.

share-panel — URL chrome

Sharereadonly shell

AUP capability tour

https://new.arcblock.io/en/docs/aup/capability-tour-slides/

Native share sheet / QR stay interactive.

Native share sheet / QR stay interactive.

provider-card — catalog chrome

DID Spacereadonly shell

Deployment storage. Card chrome only on this deck.

Catalog card chrome only.

connection-gate — status

Connectreadonly shell

Status: disconnected

Auth/connect stay off the slideshow.

Auth/connect stay off the slideshow.

blocklet-embed — address only

Embedded blockletreadonly shell

Embed target: https://new.arcblock.io/

Deck hosts the address, not a nested live blocklet session.

Nested live session stays off this tour.

auto-surface — host

Auto surfacereadonly shell

Fixture chrome. Session expand stays interactive.

auto-fire — no fire

auto-firereadonly shell

Would exec /dev/agent/.actions/run on mount.

Deck: no fire. Session / reconnect re-triggers stay off this tour.

Would exec on mount. Deck: no fire.

url-default — no navigation

url-defaultreadonly shell

match /app/today → /app/today/2026-08-14

Deck: no navigation. Canonicalize-on-mount stays off this tour.

Canonicalize-on-mount stays off this tour.

Markdown surface

Admonition (GFM callout)

Same path as text admonition—shown again as an authoring surface you type in Markdown.

Prefer same-line titles

A bare marker uses locale defaults; an explicit title on the marker line always wins.

Unknown markers

[!FIXME] stays an ordinary blockquote, not callout chrome.

Steps (::::steps)

Tutorial chrome lands on document view rendering. Outer fence must wrap each :::step.

  1. Name the target

    Document vs web-full first—then pick primitives the target reports.

  2. Demo or label

    Native → live MD sample. Unsupported → one honest “not on document” slide.

YouTube partial

Prose keeps the embed partial — normal deck padding, no data-media-fill. Supported providers render as a sandboxed frame; unrecognized URLs stay ordinary links.

This is the frame / embed path—not a general privileged iframe API.

GFM table (MD structure)

Author tables in ordinary Markdown when the document needs data. Live chart on this deck is a separate experimental node (generic directive)—not a general MD chart contract for all docs. Do not smuggle a chart through a GFM table.

Capdocument articlethis deck (DEVICE_CAPS_DECK)web-full
tablenativenativewebview
chartunsupported → table/textpartial shell (Chart.js)chart
mapunsupported → media/textpartial shell (Leaflet)map

Image (Markdown structure)

Inline images are a structure path distinct from ::media, but both are document-reachable media presentation.

Illustrative documentation asset

Prefer ::media when you need caption / type props as an AUP node; use ![alt](src) for ordinary article figures.

Deck media host

One stage · many media modes

The deck is a 1280×720 media host, not just prose cards.

ModeFeel
Single plateOne photo, edge-to-edge
MosaicBento tiles fill the stage
GridEqual tiles fill the stage
Stage / video16 box, full-bleed loop, YouTube
Tweet clampTall embed scrolls inside the stage

Next pages: one effect each — visual first.

Single plate

Bridge

Mosaic

Grid

Sized stage

Full-bleed · plates

Full-bleed · YouTube

Tweet clamp

What this deck proves

  • One Markdown record → player + reading transcript (slides: true)
  • Deck ≠ document article — interactive shells on DEVICE_CAPS_DECK
  • Hard excludes — only rtc and camera-preview (#4006)
  • Widgets — one focused readonly+data slide each (arc#4009); web-full stays richer
  • Media host — single · mosaic · grid · stage · full-bleed · tweet

Keep exploring

Primitive taxonomyWidgets hubDevice capabilitiesMarkdown slides