> ## Documentation Index
> Fetch the complete documentation index at: https://docs.blockx.chaintable.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 执行语义与结果

> 区分任务完成、写入提交与 EVM 派生数据可读。

执行语义定义你能从 BlockX 结果中推断什么。在 EVM 数据流程中，任务受理、函数完成、Writer Plugin 成功与目标数据可读是不同的观察点。

## 完成边界

| 观察结果 | 已确认什么 | 下一步检查 |
| - | - | - |
| `SubmitTask` 返回 `RUNNING` | Worker 已受理任务 | 保持订阅并等待终态 |
| `ReturnValueHandler` 对应的任务为 `SUCCEEDED` | Plugin 结果中已有收集到的输出 | 将每个输出与输入关联 |
| 区块写入任务为 `SUCCEEDED` | Writer Plugin 已完成异步写入提交 | 确认目标区块的存储完成与读取条件 |
| bundle 写入任务为 `SUCCEEDED` | BatchWrite 提交完成，Writer 返回 `job_id` | 下游使用前确认 BlockDB 作业与目标数据 |
| `FAILED` | 任务已进入失败终态 | 检查失败码、消息与可重试性 |

任务成功不建立跨表快照，也不会推进所有下游消费者。调用方应检查下一步要读取的数据是否就绪。

## 区块与 bundle 写入

* 区块路径使用 `Sync: false` 提交写入。
* bundle 路径初始化 BatchWrite 作业、上传数据并提交。取得提交响应后即返回，不等待作业在存储侧完成。
* 输出区块或 bundle 应与源计算保持对应。
* Debug 写表只生成预览，不持久化数据。

## 订阅与查询

| 操作 | 作用 |
| - | - |
| `WatchTasks` | 发送当前快照与终态更新，同时维持运行中任务的连接 |
| `GetTaskResult` | 查询选定 Worker 保存的结果 |

当 `WATCH_DISCONNECT_GRACE_MS` 为正值时，最后一条 Watch 流断开会启动宽限期。若没有流重新连接，任务以 `WATCH_DISCONNECTED` 失败。默认值 `0` 禁用该行为，从未被订阅的任务不受影响。结果查询不会建立 Watch 流。

## 重复提交与失败

* 任务运行时，向同一 Worker 重复提交会返回当前状态。
* 结果保留期内，重复提交相同任务标识会返回终态。
* 新任务标识代表新的工作。重新提交写入前，先检查之前的操作是否已经生效。
* bundle Writer 将提交结果未知的错误归为不可重试。应检查写入作业，不能据此推断没有写入。

## 小结

* 返回值可以直接读取，写入数据需要确认存储条件。
* 任务运行期间保持 Watch 连接。
* 结合任务结果与写入上下文决定是否重复执行。

继续阅读：

* [查询结果与处理失败](/zh/guides/results-and-failures)
* [结果与错误参考](/zh/reference/results-and-errors)
* [回填历史 bundle](/zh/guides/bundle-backfill)
* [Worker](/zh/components/worker)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.