Skip to main content

Module executor

Module executor 

Source
Expand description

同步反应器循环 —— CLI 执行核心

§P0 修复

  1. FIFO 队列:用 VecDeque::pop_front(),不能用 Vec::pop()。 tier0 exec_pushnew_queue.append(queue) 把新指令前置(插队语义), 必须从前端取才能保证 push 的指令先执行。
  2. max_steps 上界:先检后 pop(对齐 evorule-reactor reactor.rs BUG-3 修复)。 默认 10000,可 --max-steps 覆盖。超限发 Fact::Error + break。
  3. I/O 两阶段架构pending_io: HashMap<FactId, JsonValue> 缓存 orig 指令。 0.2.0 无 handler 时发 Fact::Error 退出,但架构正确——0.3.0 加 handler 时 只需在 IoRequest 分支注入 IoResponse + push_front(orig) 即可,循环主体不变。

§不引入 tokio runtime

execute_transition 是同步纯函数,整个循环无 await。tokio 仅作为 evorule-reactor 编译依赖存在,CLI 不创建 runtime。

§Fact 序列

执行产生 Vec<Fact>

  1. Command(初始指令)
  2. 若干 StateTransition(每步执行)
  3. 可选 IoRequest + Error(I/O 请求但无 handler)
  4. 可选 Error(TCB 错误或 max_steps 超限)
  5. Stable(稳定标记,始终发射)

最终 payload 经返回值直接交给调用方(CR-20260901-001:Stable 不再 内嵌全量快照,状态本体从执行器持有的 payload 返回,不经事实链)。

Constants§

DEFAULT_MAX_STEPS
默认 max_steps(与 evorule-reactor 默认 max_rounds 一致量级)

Functions§

execute
执行规则,产生 Fact 序列