A green build alone does not prove the application surface. Use a short chain and record what each step actually proves.
Acceptance chain
| Step | Command | Proves | Does not prove |
|---|---|---|---|
| DSL | arc dsl validate <dir> | Declared AUP/DSL sources parse | Runtime behavior or HTTP 200 |
| Package contract | arc blocklet check [dir] --profile <p> | Recipe/profile requirements met | Browser layout |
| Convention scan | arc blocklet dev [dir] | Detected content type / mounts / index hints | Serving |
| Build | arc blocklet build [dir] | dist/ + AFS/flat manifests written | Readers saw the page |
| Inspect | arc blocklet inspect <dir> | Package identity + file list (+ publish status) | Correct UX |
| Local run | arc blocklet run / service start --blocklet | Observable local surface | Remote deploy health |
arc blocklet check
arc blocklet check ./demo-basic
arc blocklet check ./demo-min --profile minimal-appProfiles accepted by the CLI: basic (default), minimal-app, agent-workspace, support-community.
Verified outputs:
Passed blocklet check (basic)
dir: /…/demo-basic
AUP pages: (none)
web sections: 0
agents: 0
settings files: 0
Passed blocklet check (minimal-app)
dir: /…/demo-min
AUP pages: agent, home, settings
web sections: 1
agents: 1
settings files: 5arc blocklet validate is an alias for check with validation-focused wording.
Use JSON when scripting:
arc blocklet check ./demo-min --profile minimal-app --jsonarc dsl validate (and lint)
arc dsl validate ./demo-min
# Passed DSL validation
# path: /…/demo-min
# files: 16arc dsl lint can report format drift on scaffold output:
Failed DSL lint (3 changed)
ERROR format_changed .aup/app.aup: File is not formatted. Run arc dsl format --write.Fix with arc dsl format --write <dir> when your gate requires a clean lint. Package check can still pass while lint reports format_changed — they answer different questions.
arc blocklet build
arc blocklet build ./demo-basic
arc blocklet build ./demo-minVerified:
Published 1 file(s) → /…/demo-basic/dist
.afs/manifest.json (http-mount protocol)
blocklet.dist.json (flat manifest)
instance: stateless
Published 20 file(s) → /…/demo-min/dist
.afs/manifest.json (http-mount protocol)
blocklet.dist.json (flat manifest)
instance: requires /instance DID SpaceOptions:
| Flag | Default | Meaning |
|---|---|---|
--output <dir> | <dir>/dist | Output directory |
--dry-run | false | Compute manifest without writing |
--clean | true | Clean output before write |
Do not hand-edit dist/. Do not commit it unless your release process explicitly requires the generated artifact (this site blocklet gitignores dist/ and .web-cache/).
Example .afs/manifest.json fragment after building demo-basic:
{
"afs": "1.0",
"type": "readonly-tree",
"files": [
{
"path": "blocklet.yaml",
"size": 107,
"contentType": "text/yaml",
"sha256": "aeb371c705d2…"
}
]
}arc blocklet inspect
arc blocklet inspect ./demo-basic
arc blocklet inspect ./demo-minVerified shapes:
Blocklet: demo-basic (demo-basic)
path: /…/demo-basic
version: 0.1.0
did: did:blocklet:demo-basic
status: published
files: 1 (107 bytes)
blocklet.yaml (…)
Blocklet: demo-min (demo-min)
path: /…/demo-min
version: 0.1.0
did: did:blocklet:demo-min
status: published
files: 20 (4468 bytes)
.afs/preflight.json
.aup/app.aup
…status: published here means a local dist/ package artifact exists for inspect/list purposes — not that a remote DID Space or Cloudflare deployment succeeded.
arc blocklet dev
arc blocklet dev ./demo-basic
# Blocklet: /…/demo-basic
arc blocklet dev ./demo-min
# Blocklet: /…/demo-min
# Content type: aup
# Index: pages → /
# Mount: agents/app-agent → /agents/app-agent
# Mount: pages → /pagesTreat dev as a directory convention report, not a server.
arc blocklet list
arc blocklet list .Verified:
Blocklets under /…:
demo-basic v0.1.0 [published]
path: demo-basic
demo-min v0.1.0 [unpublished]
path: demo-minStatus flips after a successful build for that package.
Record one acceptance note
For a change that matters, keep a short record:
arc --version- Exact
checkprofile and result buildfile count +instance:line- Local URL and HTTP/browser result
- Explicit statement that remote publish was not part of the test (or was, with target)
CLI man page: arc blocklet. Diagnostics patterns: Test and diagnose.