跳到主要內容

Sample contract · AUP cross-device · ARC 2.0.0-beta.28

`afs-list` primitive

afs-list lists AFS-backed entries; document can render empty or static children, but live path data is not a closed docs contract yet.

afs-list is an AUP cross-device primitive, not a Web Device layout component and not a Web-only widget. It is one of the 18 names in AUP_PRIMITIVES and appears in every target's DeviceCaps.primitives map as native, webview, partial, or unsupported.

Contract

FieldValue
Primitive nameafs-list
LayerAUP cross-device primitive (AUP_PRIMITIVES)
Public statusexperimental
Document capabilitynative (renderer present; data contract open)
Shared degradation chainNone
Author entryAUP + source/fixture (layout, itemStyle, from / src) · container directive with static children
Document renderer / notesrenderer/primitives/afs-list.ts (static children; empty+src → “Loading…”; empty no src → “No items”)
Showcase evidencelist-basic.aup and related list-* pages (from "data/items")

When to use

Declarative lists over AFS paths or packaged fixtures on interactive targets.

When not to use

Do not bind arbitrary AFS paths in public docs. Do not claim verified live list sampling without a read-only fixture origin.

Sample contract

FieldValue
PurposeHonest empty-state and static-children rendering on document
BoundariesNo write actions; no arbitrary AFS path; no frame bridge; not proof that a path resolves on this site
Author entryContainer directive :::afs-list{…}
SurfaceWeb Device document
Public statusexperimental
Fallback / failureNo children + no src → “No items”; no children + src → “Loading…” (static)
VerificationRoutes below · empty states only; path-backed live data still open

Document sample (empty — no items)

Source:

markdown
:::afs-list{id="docs-prim-afs-list-empty" layout="list" itemStyle="row"}
:::

Rendered:

No items

Document sample (src without children — loading chrome)

This shows the static renderer’s loading empty state. It does not fetch an AFS path on this documentation site.

Source:

markdown
:::afs-list{id="docs-prim-afs-list-loading" layout="list" itemStyle="row" src="data/items"}
:::

Rendered:

No items

Document sample (static children)

Pre-populated children render as list items. This is not evidence of AFS list() resolution.

Source:

markdown
:::afs-list{id="docs-prim-afs-list-static" layout="list" itemStyle="row"}
Static row one — authored as document children, not fetched.

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

Rendered:

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

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

Showcase list-basic binds afs-list to packaged data/items with no write action on the list itself — useful evidence for a future embedded sample with a dedicated read-only fixture origin. See Live examples: scope and contract (“What a list must add”).

Failure and limits

SituationExpected result
Empty list, no src“No items” empty chrome
Empty list with src“Loading…” static chrome (no fetch proof here)
Arbitrary AFS path on public docsOut of contract
Expecting write / drop / mutateOut of contract

Verification evidence

ItemValue
Baseline2026-08-09 · arc --version → 2.0.0-beta.28
Capability rowdocs/aup/capability-matrix.md (internal, non-routed) · afs-list
Implementationrenderer/primitives/afs-list.ts; caps device-caps.ts
Public routes/en/docs/aup/primitives/afs-list/ · /zh/docs/aup/primitives/afs-list/
Local runarc service start --blocklet blocklets/arcblock --port 4900 · confirm empty / loading / static-children chrome
AcceptEmpty states match; page states data contract open; no arbitrary path claim

Evidence anchors

ItemValue
Registrypackages/aup/src/aup-types.ts · AUP_PRIMITIVES
Document capsproviders/runtime/web-device/src/device-caps.ts · DEVICE_CAPS_DOCUMENT
Degradationpackages/aup/src/degradation.ts · DEGRADATION_CHAINS
Internal matrixdocs/aup/capability-matrix.md (internal, non-routed)
Taxonomy hubPrimitive taxonomy and evidence
Sample contract rulesLive examples: scope and contract

Nearby pages