---
title: 运行时生命周期
description: Resolved App 如何经过校验、分阶段激活、就绪、监督与关闭。
---

1. **校验**

    Kernel 在激活前拒绝非法图、缺失绑定、无效 placement 和不支持的 execution class。

2. **准备**

    Execution Adapter 为每个 Plugin Instance 创建 generation，但 App 尚未 ready。

3. **激活**

    Provider 按依赖顺序激活；整个分阶段 App 要么全部成功，要么全部失败。

4. **打开就绪门**

    只有所有必需 Instance 都 active 后，唯一 App Ready Gate 才会打开。

5. **运行与监督**

    调用和受管工作属于特定 Instance generation 及其取消 scope。

6. **关闭**

    Driver 转换宿主关闭，Kernel 协作式取消，Adapter 释放 generation 所有资源。

如果所选 Adapter 支持重建 generation，稳定 consumer handle 可以跨 provider
restart 保留。它仍指向不可变 Plan 选择的 provider；restart 并不等于 rebinding。

## Execution Lane

Native 并行通过 Plan 声明的 Execution Lane 复制单所有者 Kernel。每个 Plugin
Instance 只有一个 Lane owner。系统正确性不依赖 work stealing、运行时 Instance
迁移或共享可变 Plugin 状态。


## Authoring V2 的构造、取消与清理

支持该 Profile 的 Adapter 在激活前执行独立构造阶段。启动调用者放弃等待只会请求
取消；晚到的构造成功仍必须回滚并执行一次 stop。清理共享有界的截止时间，stop
获得新的清理取消 token 和剩余预算。

调用返回、调用者超时和底层执行真正结束是不同事件。V2 的执行许可由 Driver 管理，
调用者取消或丢弃 Future 不会提前释放容量。关闭或替换 Generation 要等待受跟踪的
Request、Stream、Event 执行结束；清理超时保留 Generation，阻止重叠替换或第二次 stop。

## Host-essential 故障策略

`host_essential` 由 Host/Profile 显式启用。初次启动仍要求所有选中的 Instance
成功激活。Ready 之后，Host 必需 Instance 及其沿 `one` 依赖计算的闭包决定恢复耗尽
是否终止整个 App。非必需 Instance 可保持不可用，其他无关工作继续；不会换 Provider、
重放调用或推导 optional/many 成员必需。业务错误或一次超时本身不等于运行时故障。

Plan schema 3 携带命名依赖身份、Authoring/Profile 与终结策略；旧 schema 2 有显式
兼容路径。未适配的执行器必须在激活前拒绝新 Profile。这些保证不能仅凭语言名称推广到
任意 Adapter；也不能把故障策略当作进程隔离。

[Implementation evidence](https://github.com/LioRael/lenso/blob/main/docs/architecture/plugin-authoring-implementation-status.md).
