Do not begin with a deployment when a page looks wrong. First identify which boundary is actually failing.
| Symptom | Start here | What it tells you |
|---|---|---|
| DSL parse/lint error | arc dsl lint . | Static authoring problem; error severity fails, warnings still need review |
| Layout/source validation error | arc dsl validate . | AUP/Web layout or declared source contract problem |
| Blocklet/profile error | arc blocklet check . | Combined source checks, Content Space when present, or recipe structure problem |
| Package/pre-render error | arc blocklet build . | Build/artifact path problem, not yet reader-facing acceptance |
| Browser page is old or different | Check printed URL, registered parent/worktree, reload, then inspect the current source | The local daemon may point at another worktree or its watcher/cache may not have invalidated |
| List is empty | Check source path, scope, filter, locale, then the component empty state | Empty can be a legitimate result or an undeclared/mismatched binding |
Read the boundaries correctly
dsl validate covers AUP sources plus Web layouts under pages, content objects, and layouts/. blocklet check adds structural and profile-level checks. Neither command proves that the page has useful alt text, keyboard behavior, a good narrow viewport, or a successful external link.
An undeclared $source.<name> can be reported when its binding scope is known, rather than silently becoming an empty list. Shared named-layout bindings are not fully covered at initialization, so a rendered browser check remains essential.
Repair in a stable order
- Fix the first static error, not the last symptom.
- Re-run the command that owns that boundary.
- Build only after lint/validation/check are clean enough to interpret.
- Run the blocklet directly locally and open the exact printed URL.
- Record the viewport, locale, route, and observed result for a UI change.
If the page is stale, do not deploy to DID Space. Confirm which blocklet parent directory the local daemon registered; reload once the source and URL are known to match. Local watcher refresh is a convenience, not an unconditional correctness guarantee.
For local run procedure, see Preview, build, and publish. For content-query diagnosis, see Source-binding reference.