Files
vercel-labs--zerolang/docs/articles/diagnostics.md
T
wehub-resource-sync e7738de6d2
CI / Deep Native Runtime Cases (1/6) (push) Has been skipped
CI / Native Preflight (push) Failing after 1s
CI / Native Runtime Cases (1/2) (push) Failing after 0s
CI / Native Runtime Cases (2/2) (push) Failing after 1s
CI / Native Metadata Reports (push) Failing after 0s
CI / Native Direct Backend Artifacts (push) Failing after 0s
CI / Native Sanitizer Smoke (push) Failing after 1s
CI / Command Contract Snapshots (push) Failing after 1s
CI / Deep Conformance Suite (push) Has been skipped
CI / Graph Build Perf (push) Failing after 1s
CI / Deep Native Preflight (push) Has been skipped
CI / Deep Native Runtime Cases (2/6) (push) Has been skipped
CI / Deep Native Runtime Cases (3/6) (push) Has been skipped
CI / Conformance Suite (push) Failing after 1s
CI / Workspace Checks (push) Failing after 0s
CI / Deep Native Runtime Cases (5/6) (push) Has been skipped
CI / Deep Native Runtime Cases (6/6) (push) Has been skipped
CI / Deep Native Runtime Cases (4/6) (push) Has been skipped
CI / Deep Graph Build Perf (push) Has been skipped
chore: import upstream snapshot with attribution
2026-07-13 12:29:30 +08:00

108 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Read The Error As A Repair Contract
Zerolang diagnostics are written for humans and agents together. A human should see what
went wrong. An agent should see the safest next edit shape.
Example:
```text
error[NAM003]: Unknown identifier
unknown identifier 'message'
examples/hello.0:2:27
2 | check world.out.write(message)
| ^^^^^^^
rule: Names must be declared before use in the current lexical scope.
expected: local binding, parameter, function, builtin value
actual: no visible symbol named 'message'
fix: Introduce a local binding before this use (local-edit)
explain: zero explain NAM003
```
The path may name a `.0` projection because source maps point at readable text.
That does not mean the agent should edit that file. In a graph-first package,
the repair should normally be a graph patch.
## Agent Repair Flow
```json-render
{
"messages": [
{
"role": "user",
"text": "this fails with NAM003. can you fix it?"
},
{
"role": "assistant",
"text": "Ill inspect the diagnostic, patch the missing binding, and rerun the focused check."
},
{
"role": "tools",
"calls": [
{
"command": "zero explain NAM003",
"output": "NAM003: unresolved name\nfix: introduce a binding or use an in-scope symbol"
},
{
"command": "zero query --fn main",
"output": "main\n check world.out.write message"
},
{
"command": "zero patch /tmp/introduce-message.patch",
"output": "program graph patch ok"
}
]
}
]
}
```
## Text And JSON Modes
Use text first:
```sh
zero check
zero explain NAM003
```
Use JSON when a tool needs exact spans, codes, fix ids, or nested readiness
facts:
```sh
zero check --json
zero fix --plan --json
zero doctor --json
```
Agents should not default to JSON for every command. JSON is for automation,
edit planning, CI, editors, and exact diagnostic fields.
## Common Graph-First Diagnostics
`BLD002` means a command expected graph-backed input but received a projection
or another unsupported input. Import the projection or pass the package/graph
store.
`RGP003` means projection state is invalid, stale, conflicting, or impossible
to verify. Use `zero status`, then choose `zero export`, `zero import`, or
manual review.
`GRF013` and related graph diagnostics mean the proposed graph edit would leave
an invalid shape, such as a sparse ordered group.
`CIMP003` and `CIMP005` report unsafe or incomplete C import/link metadata.
Use package-relative headers/libraries or configure target C dependency facts
instead of relying on host paths.
## Fix Plans
`zero fix --plan --json` returns a repair plan, not an automatic edit:
```sh
zero fix --plan --json
```
Use it when an agent needs a safer next step. The agent should still explain
the patch it will apply and validate the user-visible behavior afterward.