**Pi：PASS。DSH：FAIL。** 判定范围仅为本次检查的源码命题、设计解释和正文图示语义。

已读取两套课程的 index、Pi 01–20、DSH 01–26，以及 examples 的关键业务路径；核对正文全部 **68 张 Mermaid 图：Pi 22 张、DSH 46 张**。发现 DSH **2 处必须修正的语义错误、1 处非阻断的时序表达歧义**。Pi 未发现本范围内的阻断问题。

这是本次单独的独立审查，不代表其他独立审查已经完成。当前工具没有提供可核验的模型身份信息，因此不能额外认证本报告由 Astra 执行。

**审查基线与方法**

| 项目 | 实际核对的版本 |
|---|---|
| Pi 核心 | `pi-1.0.1`，`a7229ddc21810d6245105978033b7df645ecc2f7` |
| Pi main 增量 | `83692682f095528f8b71652ddacff7075e36e893` |
| DSH 核心 | `upstream`，`da00f7f5358f2949383b35c14f548bc20187d80c` |
| DSH 实验／release | rc.2，`639ed015397290b3745d163aafe02ffee4aa3f84` |
| DSH master 增量 | `5badb15009ae1756c3afe0ae0cef1faafc290ccc`，单独核对 alpha 发布渠道变化 |

没有打开 research、appendix 中的作者 PASS 或其他审查报告，没有以其结论佐证。本次只读源码和正文，以调用者、实现、消费者共同核对命题。

另完成静态交叉检查：415 处固定核心 SHA 源码链接的文件及起始行均存在；Pi 32 项、DSH 192 项源码阅读表行数一致；DSH 114 项范围计数和 357 项 manifest 表与固定工作树一致。这些检查不等于运行证明。

**发现的问题**

**D1 · 中等／阻断本次 PASS：preset 图把注册时挂载画成会话选择时挂载。**

- 位置：[04-boot-and-presets.md:123](/home/debian/codex/learn/deepseek-harness/docs/04-boot-and-presets.md:123)，第二张图，重点为第 125–127 行。
- 图示顺序为：会话选择 preset → 查 revision → `prepareProfileEntries / mount` → audit → 绑定 Agent。这会让读者理解为会话创建触发一次新的 preset 子树挂载，与共享常驻 revision 的设计不同。
- 固定源码：[注册与 activate](/home/debian/codex/learn/deepseek-harness/upstream/packages/preset/agent-preset-registry/src/index.ts:77)在定义注册时立即调用 `activate()`，其中 `mountPreset()` 创建 generation。[会话 mount](/home/debian/codex/learn/deepseek-harness/upstream/packages/preset/agent-preset-registry/src/index.ts:281)只执行 `retain()`、`bind()` 和引用释放。选择时可以重新审计现有树，但不会重新创建该树。
- **最小修法：**将图拆成两个阶段：  
  “定义注册／更新 → activate → mount → audit → 保存 revision”；  
  “会话选择 → retain 现有 revision／检查可用性 → bindScopeParent”。  
  保留多 Agent 共享和引用计数回收说明。邻近正文已有正确解释，主要需修图。

**D2 · 中等／阻断本次 PASS：限时提问图错误合并了无 provider 的失败路径。**

- 位置：[17-human-and-automation.md:69](/home/debian/codex/learn/deepseek-harness/docs/17-human-and-automation.md:69)，第二张图：`Asking --> Failed: 无 provider / 非法问题 / 取消`。
- 同一图也包含 timed wait，但在有效的限时请求中，无 provider 不会立即走这个失败终态。
- 固定源码：[askTimed](/home/debian/codex/learn/deepseek-harness/upstream/packages/interaction/user-questions/src/index.ts:234)在第 254–256 行捕获 `NO_PROVIDER` 后等待前台窗口结束；第 261 行将 `ASK_TIMED_OUT` 转为 `{ pending: true, callId }`。[工具调用方](/home/debian/codex/learn/deepseek-harness/upstream/packages/interaction/tool-ask-user/src/timed.ts:191)明确区分限时和无限等待路径。
- **最小修法：**为无 provider 加条件：普通／无限等待的 `ask` → `Failed(NO_PROVIDER)`；限时 `askTimed` → 继续等待 → 超时后 `Continued`。非法问题、取消仍走失败。第 60 行补充“底层 ask 抛出，timed 包装会捕获并等待”。

**D3 · 低／非阻断：Schedule 图没有明确表示 Agent 执行与 receipt 提交可以交错。**

- 位置：[17-human-and-automation.md:129](/home/debian/codex/learn/deepseek-harness/docs/17-human-and-automation.md:129)，第四张图；执行任务的自调用放在第 134 行、receipt 之后。
- 固定源码：[Schedule runtime](/home/debian/codex/learn/deepseek-harness/upstream/packages/schedule/schedule/src/runtime.ts:122)先 `followup()`，再等待 Session flush、提交 task receipt；[Agent.followup/send](/home/debian/codex/learn/deepseek-harness/upstream/packages/core/agent-loop/src/agent.ts:154)已经唤醒 driver。因此 receipt 不是启动执行的屏障。
- 图没有明确声明该屏障，正文也正确区分 delivered 与 succeeded，故不据此单独判 FAIL；但当前垂直排列容易产生过强理解。
- **最小修法：**在 followup 后用并行区块表示“Agent 活动”和“flush → receipt”，或增加注释“Agent 已被唤醒，可与持久化及 receipt 提交交错”。

以上是课程表达问题，不是据此认定上游存在安全漏洞。D1、D2 已足以使 DSH 在本轮范围内判为 FAIL。

**Pi 逐章与全部图示结果**

文件均相对 [Pi docs](/home/debian/codex/learn/pi/docs)。图号按每个文件内的出现顺序编号，`L` 为 Mermaid 围栏起始行。PASS 表示核对了图中实体、条件和顺序，并结合正文检查失败、权限与持久化边界。

| 正文文件 | 章节结论 | Mermaid 结果 |
|---|---|---|
| `index.md` | PASS：课程层次与固定版本定位一致。 | 无 |
| `01-version-roadmap.md` | PASS：1.0.1 为当前基线，旧 1.0 属历史。 | 无 |
| `02-design.md` | PASS：AI、Agent、SDK 与产品层的职责区分成立。 | #1 L23 PASS；#2 L48 PASS |
| `03-usage.md` | PASS：安装、配置和日常用法与固定版本相容；未执行安装。 | 无 |
| `04-models-messages.md` | PASS：消息转换、transcript 与 provider 适配条件准确，未将转换当作校验。 | #1 L80 PASS；#2 L106 PASS |
| `source/05-agent-loop.md` | PASS：准备请求、工具批次、结束条件和事件屏障符合实现。 | #1 L24 PASS；#2 L137 PASS |
| `source/06-session.md` | PASS：SDK 工厂、AgentSession、公开事件与日志追加边界准确。 | #1 L21 PASS；#2 L98 PASS |
| `source/07-context.md` | PASS：会话树、投影、usage 估算、合法切点及 split-turn 摘要有实现依据。 | #1 L28 PASS；#2 L90 PASS；#3 L128 PASS；#4 L156 PASS；#5 L212 PASS |
| `source/08-tools-extensions.md` | PASS：schema 在 hook 前、可变参数、短路阻断及项目 trust 的解释准确。 | #1 L123 PASS；#2 L157 PASS |
| `source/09-mcp-codemode.md` | PASS：1.0.1 配置合并、重试分类、嵌套工具权限、CodeMode 限制与提交时机准确。 | #1 L22 PASS |
| `source/10-interfaces.md` | PASS：TUI、RPC、session router 和协议边界没有混同。 | #1 L21 PASS；#2 L100 PASS |
| `source/11-durable.md` | PASS：intent／commit、重放、单所有者及 Chord 生命周期说明有依据。 | #1 L66 PASS |
| `labs/12-customize.md` | PASS：扩展及资源组合与示例实现对应。 | 无 |
| `labs/13-core.md` | PASS：搜索、读取收据、提交引用和预算控制的业务链成立。 | 无 |
| `labs/14-sdk.md` | PASS：恢复历史不重新授予读取收据；宿主职责与 SDK 能力区分清楚。 | #1 L131 PASS |
| `labs/15-production.md` | PASS：settled 后由宿主验收、在预算内继续的设计成立。 | #1 L69 PASS |
| `16-troubleshooting.md` | PASS：故障定位按层区分，反例与控制流对应。 | #1 L7 PASS |
| `17-source-map.md` | PASS：地图与固定源码匹配，没有把生成清单等同全库审计。 | 无 |
| `18-validation.md` | PASS：未完成交付项目保持 PENDING；不据此否定源码内容。 | 无 |
| `19-deployment.md` | PASS：部署说明作为操作方案成立；网站、下载未验收。 | 无 |
| `20-review-and-version-delta.md` | PASS：独立核对版本增量，未借用正文中的既有审查结论。 | 无 |

Pi 图示合计：**22/22 PASS**。

Pi 关键命题进一步核对如下：

- 工具参数先做 schema 处理，再进入 `beforeToolCall`；hook 修改后的参数并没有自动再跑一遍相同校验。并行工具执行与结果提交顺序也分别处理。
- Core 的异步事件监听屏障与 AgentSession 面向外部的同步通知不是同一种契约，课程没有混为一谈。
- SDK 重开会话恢复的是历史与投影；示例新建工具实例中的 receipts 仍为空，不能凭历史引用直接提交新任务。
- MCP 设置型覆盖与完整连接 entry 替换不同；普通瞬态错误、只读重试和 session expired 重连的条件不同。
- CodeMode 的宿主工具调用仍经过权限路径；输出限制、执行失败与 store 提交边界有源码支撑。

**DSH 逐章与全部图示结果**

文件均相对 [DSH docs](/home/debian/codex/learn/deepseek-harness/docs)。`PASS*` 表示语义可成立，但有上述 D3 表达建议。

| 正文文件 | 章节结论 | Mermaid 结果 |
|---|---|---|
| `index.md` | PASS：整体组成及阅读路线成立。 | #1 L21 PASS |
| `01-version-roadmap.md` | PASS：核心快照、rc.2 实验和发布身份区分清楚。 | 无 |
| `02-design.md` | PASS：插件组合、服务替换和产品装配的取舍有实现依据。 | #1 L36 PASS |
| `03-cordis.md` | PASS：服务可见性、事件语义、效果清理及重载边界准确。 | #1 L15 PASS；#2 L66 PASS；#3 L125 PASS |
| `04-boot-and-presets.md` | **FAIL：第二图挂载时机错误，见 D1；其余启动、配置和 preset 解释通过。** | #1 L37 PASS；#2 L116 **FAIL D1** |
| `05-session.md` | PASS：事实日志、append 准入、派生消息和 fork 修复边界成立。 | #1 L105 PASS |
| `06-projection-and-prompt.md` | PASS：projection 注册／复用及下一请求快照的解释准确。 | #1 L26 PASS；#2 L129 PASS |
| `07-agent-loop.md` | PASS：收信、accepted step、空输入、取消、工具结果有序追加成立。 | #1 L9 PASS；#2 L73 PASS；#3 L119 PASS |
| `08-tools.md` | PASS：可见性不等于许可；参数、pre、guard、around、body、post 顺序对应实现。 | #1 L73 PASS |
| `09-llm-and-context.md` | PASS：retry 在模型步骤内部；适配、压缩及失败提交边界准确。 | #1 L22 PASS；#2 L82 PASS；#3 L128 PASS |
| `10-execution-and-sandbox.md` | PASS：FS 策略检查、shell 进程隔离和 LSP 启动路径没有混同。 | #1 L24 PASS；#2 L55 PASS |
| `11-ptc-and-workflows.md` | PASS：PTC 进程约束、有序提交及独占屏障成立；VM 未被当作安全边界。 | #1 L18 PASS；#2 L89 PASS；#3 L160 PASS |
| `12-mcp-and-bridges.md` | PASS：工具更新两阶段、冲突失败及 transport／hook 边界准确。 | #1 L54 PASS；#2 L103 PASS |
| `13-agents-and-goals.md` | PASS：Agent、Job、Goal、Schedule 的所有权和持续工作机制有区分。 | #1 L5 PASS；#2 L124 PASS |
| `14-sdk.md` | PASS：SDK 请求生命周期、订阅顺序及 TS／Python 差异对应实现。 | #1 L18 PASS；#2 L140 PASS |
| `15-ui-and-api.md` | PASS：认证、Host／Origin 检查、文件发布和冷历史查询边界准确。 | #1 L30 PASS；#2 L64 PASS；#3 L107 PASS；#4 L142 PASS |
| `16-storage-and-migrations.md` | PASS：buffer、flush、close、lease、迁移发布及索引职责准确。 | #1 L25 PASS；#2 L61 PASS；#3 L106 PASS；#4 L135 PASS |
| `17-human-and-automation.md` | **FAIL：限时提问分支错误，见 D2；Schedule 图另有 D3 歧义。审批、计划、Webhook 和身份路径通过。** | #1 L32 PASS；#2 L64 **FAIL D2**；#3 L86 PASS；#4 L119 **PASS* D3**；#5 L149 PASS；#6 L185 PASS |
| `18-own-plugin.md` | PASS：笔记服务替换、读取证据和工具消费者对应示例。 | #1 L71 PASS |
| `19-own-agent.md` | PASS：组合、预算、持久化所有权明确，未把 retry 数当步骤预算。 | #1 L9 PASS |
| `20-sdk-labs.md` | PASS：双语言路径、mock 请求和保存后冷读的解释与代码一致。 | 无 |
| `21-compare-pi.md` | PASS：比较基于不同组合和生命周期边界，没有制造能力等价。 | #1 L26 PASS |
| `22-deployment.md` | PASS：部署说明在静态范围内成立；网站交付留待验收。 | 无 |
| `23-source-map.md` | PASS：范围、manifest 和阅读表与快照对应，覆盖声明有边界。 | 无 |
| `24-troubleshooting-and-tests.md` | PASS：故障层次和检查方法与实现对应；未复跑所列测试。 | #1 L18 PASS |
| `25-review.md` | PASS：PENDING 是交付状态；没有作为内容缺陷，也未采用其他审查结论。 | 无 |
| `26-version-delta.md` | PASS：rc.2、核心基线和 alpha 发布增量分别解释，没有把 alpha 增量归入 rc.2。 | 无 |

DSH 图示合计：**44 张通过，其中 1 张带非阻断建议；2 张失败**。

DSH 重点命题进一步核对如下：

- Cordis 的服务定义、provider、scope 与事件派发具有不同职责；同步 `emit`、异步聚合和 waterfall 的语义没有混写。
- Session 是事实来源，模型请求来自 projection／assembly；记录事件不等于立即持久化，也不等于所有观察者都具有执行屏障。
- 模型步骤预算约束 accepted step；单步内部 retry 可以增加实际请求次数。
- 工具出现在 catalog 不代表 body 获得许可，执行路径仍经过 gate。
- 官方 JSONL 的只读 open 是冷读，不创建活动 Agent；恢复运行还涉及 writer、修复、scope 和 Agent 生命周期。
- LSP 经 subprocess 启动，不因同宿主的 shell 使用 sandbox 就自动继承该隔离。
- master 的 alpha 增量主要涉及版本、依赖和发布渠道逻辑；本轮未发现其修改课程核心 Agent／tool／Session 算法，实验仍以 rc.2 为准。

**实际追踪的主要源码锚点**

以下为本次实际检查的关键实现，属于证据入口，不表示这些文件所在仓库已全部逐行安全审计。

| 项目／命题 | 主要源码锚点 |
|---|---|
| Pi 消息转换 | [transcript.ts](/home/debian/codex/learn/pi/pi-1.0.1/packages/ai/src/utils/transcript.ts:30)、[Anthropic 适配](/home/debian/codex/learn/pi/pi-1.0.1/packages/ai/src/api/anthropic-messages.ts:1128) |
| Pi schema／hook／工具执行 | [agent-loop.ts](/home/debian/codex/learn/pi/pi-1.0.1/packages/agent/src/agent-loop.ts:693)、[扩展 runner](/home/debian/codex/learn/pi/pi-1.0.1/packages/coding-agent/src/core/extensions/runner.ts:1242) |
| Pi 事件屏障与 Session | [Agent.processEvents](/home/debian/codex/learn/pi/pi-1.0.1/packages/agent/src/agent.ts:565)、[AgentSession](/home/debian/codex/learn/pi/pi-1.0.1/packages/coding-agent/src/core/agent-session.ts:1074) |
| Pi 恢复与压缩 | [SessionManager](/home/debian/codex/learn/pi/pi-1.0.1/packages/coding-agent/src/core/session-manager.ts:400)、[compaction](/home/debian/codex/learn/pi/pi-1.0.1/packages/coding-agent/src/core/compaction/compaction.ts:872) |
| Pi MCP 1.0.1 | [配置合并](/home/debian/codex/learn/pi/pi-1.0.1/packages/coding-agent/src/extensions/mcp/config.ts:74)、[重试条件](/home/debian/codex/learn/pi/pi-1.0.1/packages/coding-agent/src/extensions/mcp/runtime.ts:291)、[OAuth flow](/home/debian/codex/learn/pi/pi-1.0.1/packages/mcp/src/oauth/flow.ts:305) |
| Pi CodeMode | [执行与提交](/home/debian/codex/learn/pi/pi-1.0.1/packages/coding-agent/src/extensions/codemode/execute.ts:298)、[累计输出限制](/home/debian/codex/learn/pi/pi-1.0.1/packages/codemode/src/runtime/prelude-source.ts:36) |
| Pi Durable／Chord | [工具事务](/home/debian/codex/learn/pi/pi-1.0.1/packages/durable/src/harness/tool.ts:85)、[JSONL 提交顺序](/home/debian/codex/learn/pi/pi-1.0.1/packages/durable/src/storage/jsonl/storage.ts:277)、[facet 激活](/home/debian/codex/learn/pi/pi-1.0.1/packages/chord/src/facets/host.ts:356) |
| Pi examples 收据恢复 | [sdk-checkpoint.ts](/home/debian/codex/learn/pi/examples/src/sdk-checkpoint.ts:38)、[evidence-tools.ts](/home/debian/codex/learn/pi/examples/src/evidence-tools.ts:37) |
| DSH Session／投影 | [Session append](/home/debian/codex/learn/deepseek-harness/upstream/packages/core/session/src/index.ts:690)、[派生消息](/home/debian/codex/learn/deepseek-harness/upstream/packages/core/session/src/index.ts:856) |
| DSH 步骤与工具提交 | [Agent turn／step](/home/debian/codex/learn/deepseek-harness/upstream/packages/core/agent-loop/src/agent.ts:295)、[tool-calls](/home/debian/codex/learn/deepseek-harness/upstream/packages/core/agent-loop/src/tool-calls.ts:152) |
| DSH 工具许可与 schema | [执行管道](/home/debian/codex/learn/deepseek-harness/upstream/packages/core/tools/src/index.ts:1441)、[defineTool](/home/debian/codex/learn/deepseek-harness/upstream/packages/core/tools/src/schema.ts:554) |
| DSH SDK 与冷读 | [SDK client](/home/debian/codex/learn/deepseek-harness/upstream/packages/sdk/client/src/api.ts:183)、[SDK server](/home/debian/codex/learn/deepseek-harness/upstream/packages/sdk/server/src/server.ts:246)、[JSONL open](/home/debian/codex/learn/deepseek-harness/upstream/packages/session/session-persistence-jsonl/src/index.ts:348) |
| DSH 持久化屏障 | [JSONL flush／close](/home/debian/codex/learn/deepseek-harness/upstream/packages/session/session-persistence-jsonl/src/storage.ts:203)、[checkpoint policy](/home/debian/codex/learn/deepseek-harness/upstream/packages/session/session-checkpoint-policy/src/index.ts:1) |
| DSH 执行隔离 | [LSP subprocess](/home/debian/codex/learn/deepseek-harness/upstream/packages/lsp/lsp-stdio/src/connection.ts:92)、[shell sandbox](/home/debian/codex/learn/deepseek-harness/upstream/packages/shell/bash-sandbox/src/index.ts:75)、[FS 策略检查](/home/debian/codex/learn/deepseek-harness/upstream/packages/fs/fs-sandbox/src/index.ts:123) |
| DSH workflow 边界 | [VM runtime](/home/debian/codex/learn/deepseek-harness/upstream/packages/workflow/workflow-ptc/src/runtime.ts:83)、[跨 realm 数据处理](/home/debian/codex/learn/deepseek-harness/upstream/packages/workflow/workflow-ptc/src/realm.ts:1) |

examples 还实际追踪了 Pi 的 core／SDK 请求、离线检查点、投影、预算及扩展路径，以及 DSH 的笔记服务、内存／JSON provider、策略、组合、检查点、mock server、保存会话读取和 Python 调用路径。DSH vendored 的五个 Python SDK 文件与 rc.2 源文件逐个字节比对一致。

**未测试边界**

- 没有修改文件、启动子 agent、重新安装依赖或运行课程／上游测试。
- 没有调用真实模型、OAuth、收费服务，也没有做公网、网站、下载包或跨平台验收。
- Mermaid 结论来自源码与图文本的语义核对，没有运行渲染器或做页面视觉验收。
- 没有重新查询 npm／PyPI 公网 dist-tag；版本增量结论基于已下载 Git 对象，不能当作当前公网渠道状态证明。
- Pi 18、DSH 25 的 PENDING 保持为诚实的待验收状态。
- 本报告不承诺整个上游仓库的全行安全审计。DSH 修正 D1、D2 后仍需复核相关图与邻近正文，当前结论保持 **FAIL**。