Astra 独立交叉复验:DSH 课程¶
结论:PASS,限定于下述正文、图语义、固定源码核对与离线实验范围。 审查者为 Pi 课程作者;没有参与 DSH 正文与实验编写。本报告不是作者自查,也不把另一审查者的通过作为依据。日期:2026-10-04。
修正复验¶
初审原记录保留于 cross-pi-initial.md。发现三项 P2,均由 DSH 作者修正,本人重新读取修改与对应源码:
| 问题 | 复验结果 |
|---|---|
| XPI-01:LSP 被图示为经过 sandbox.confine | 已拆为 LSP→subprocess 的直接路径,shell/terminal→confine 标明显式 sandbox consumer;与 LspConnection 实际 spawn 一致 |
| XPI-02:没有 assistant settlement 被误导到模型故障 | 已增加 blocked/pre-step gate 判定;另外独立构造真实插件拒绝第一步,经官方 SDK/CLI 实跑:blocked、0 HTTP、0 assistant settlement |
| XPI-03:审批拒绝仍被图示进入 allow-only guards | 已分成允许→guards,拒绝/取消/unavailable→normalized error,符合 tools/index.ts 的 serviceAsk/decision 分支 |
不存在未关闭的 P0/P1/P2。最终正文/examples 指纹见 cross-pi-files.json。整合者若再改正文,需要审读增量后刷新指纹;本 PASS 不自动覆盖后续改稿。
全书教学判断¶
| 范围 | 实际判断依据 |
|---|---|
| index / 01 | 将六阶段可运行入口提前;区分 da00 研究、rc.2 运行与新 master 发布增量,读者可以选择先实践路径 |
| 02 | 围绕笔记业务拆职责;解释为什么不把资料库写入循环,不以架构图代替业务目标 |
| 03 | provider 消失→consumer 失活→schema 撤销→重挂恢复,与真实 Cordis 测试对应;waterfall 有等待下游的反例 |
| 04 | patch、profile、preset 与 scope 的责任分开;配置整体替换的代价落到实际 composition |
| 05 | 日志、当前 surface、durable writer 各有身份;fork/recovery 不被误写成复制一串聊天文本 |
| 06 | 单次请求增加的输入与 header/context 分开解释;重试 attempt 不重复提交 user,来源与投影可追踪 |
| 07 | 相同 call-1/call-2 穿过三次请求;pre-step、step、attempt、turn 有可观察区别,预算拒绝发生位置准确 |
| 08 | canonical value/schema/render/model content 与 pre/post gate 顺序明确;post block 不回滚副作用有实际测试 |
| 09 | 真 Messages SSE fixture、callId 校验与 provider route 绑定构成连续链;压缩阈值两例按实码计算正确 |
| 10 | 从批准的笔记快照到动态文件/编辑工具的权限代价具体;修图后 LSP、managed lifetime、文件沙箱不混同 |
| 11 | 同领域工具何时需要 PTC/workflow/Ralph 有选择依据;程序片段标明未挂载 runtime 的前提,不冒充已运行实验 |
| 12 | native provider/MCP/command hook 的选择包含失败语义;MCP fetch 失败保留旧代、swap 冲突清空本 server,不能误称事务恢复 |
| 13 | 独立推理、后台 Job、同 Session Goal、到期投递分别对应需求;cap/delivery/报告完成不等于业务成功 |
| 14 | SDK 真正只提供三个线请求;同 runtime 继续与冷恢复区分明确,request timeout 不是总运行期限 |
| 15 | UI 的读历史/继续/停止动作对应不同控制契约;live stream 与稳定事件分开,不声称 SDK 自带 Web 全能力 |
| 16 | 阶段5冷读引出日志、索引、writer、迁移;close/flush 与 idle 分开,保留旧 generation 不冒充可降级 |
| 17 | 同一助手扩展到发布摘要时,内容评审、工具许可与凭据获取分开;schedule/webhook 回执范围准确 |
| 18 | 先跑 runtime,再建立搜索摘要→全文→引用;替换 JSON provider 保留 consumer,并有明确输入/输出失败练习 |
| 19 | 步预算的单位和重置归属清楚;有限步数、runtime completed、业务验收、持久 home 是不同条件 |
| 20 | 三次真实请求表、工具 ID 与日志轨迹能互相定位;六阶段是可复制实验,Python 使用同版本 runtime |
| 21 | Pi 对照固定 1.0.1;比较相同应用变更的维护责任,承认 Pi structuredContent/outputSchema 与非默认 Durable 层 |
| 22 | 静态课程交付与运行 Agent 分开;明确 artifact/home/private data 不进入发行包,发布命令是维护者路径 |
| 23 | 地图服务于具体问题的源码追踪,明确文件清单不是全仓语义审计 |
| 24 | 失败按真实事件层定位,修图补上无模型请求的门拒绝;源码分析与已运行覆盖分开 |
| 25 | 旧版通过与本轮审查不混用;作者自查不能充当独立审查 |
| 26 | master/tag/npm channel/Python SDK 四种坐标分开;新增渠道预检的收益与非原子发布的代价准确 |
完整阅读 01–26 讲授正文、index/README 与全部实验源/测试。图数为编号正文 45 张加首页 1 张,共 46 张;首页学习路径图也已核对。23 的生成索引按索引职责核对,不声称逐行审核全部上游仓库。全部图逐图检查语义;实际浏览器 SVG 渲染属于整合者另行执行的验收。
独立运行与源码证据¶
运行目录 /tmp/dsh-cross-pi 从可分发 examples 输入建立,重新 npm ci,无原 node_modules/dist。类型检查、编译通过。20 个 Node 测试及 1 个 Python 测试全部实际通过;初次 Python ENOENT 和系统 ensurepip 缺失均如初审报告保留,随后按正文 uv 方案解决。未隐藏失败记录。
六个 checkpoint 另行逐个执行,实际 HTTP 数为 1 / 3 / 3 / 3 / 2 / 3,业务状态依次为 runtime-only / answered-with-evidence / answered-with-evidence / insufficient-evidence / budget-exhausted / answered-with-evidence。阶段4的 evidenceRead=true 仍不能通过任务验收;阶段5 runtime 正常关闭后由官方 reader 读到 25 个逻辑事件,并逐 seq 对照 SDK 事件。TS demo 与 Python demo 均再次实际通过,各 3 次 HTTP,Python 有 2 个 tool results 且 finish_reason=completed。
独立加的首步拒绝探针只存在审查临时目录,没有改课程实现。该探针验证图中漏掉的真实路径,结果保存于 cross-pi-evidence.json,同文件记录实际六阶段与双语言 demo。没有为三处图修重复全套测试。
回到固定 da00 源码核对的关键路径包括:Agent preStep/turn/step/assistant settlement;tool-calls 的 append→prepare→dispatch→按序 finalize/commit;Tools 的审批/guards/output;SDK 的 getOrCreateSession、三方法分派和先订阅后 prompt;JSONL buffer/drain/close 与 session-checkpoint-policy;MCP generation swap/reconnect;compaction 配额公式。核对结果支持正文中的主要因果关系。并未声称每个高级模块的每个分支都运行过。
Python vendored 五文件全部与 639ed015397290b3745d163aafe02ffee4aa3f84:python/sdk/src/ 原文件逐字节相等,且与 SOURCE.json SHA256 相等。da00→5bad 的实际 diff 为342文件,算法代码之外的 package/发布渠道变化;独立读取 5bad:scripts/release/publish.ts 的 validateDistTag、verifyDistTag、整批 preflight 与 integrity/上传顺序,支持26.7–26.8,不把注册表预检解释为跨包事务。
未验证范围¶
未执行收费模型、真实 DeepSeek 云 API、远端 OAuth/MCP/SSH、Electron、浏览器/电脑/语音服务、生产 Teams、Windows/macOS sandbox、断电/kill-9、完整旧格式迁移矩阵和完整上游测试。fixture 的固定答案验收不证明真实模型能自主检索、判断引用蕴含关系或完成任意业务。npm 安装报告16项依赖问题(7 moderate、9 high);运行通过不是安全审计通过。
本交叉审不承担公网部署、TLS、下载 ZIP 最终字节、网站搜索与实际 SVG 渲染。它们需独立交付证据;没有拿旧版网站或旧报告补成本轮 PASS。
最终整合增量复验¶
2026-10-04 再次比较前次指纹,编号正文变动仅 04、17、24、25;同时纳入当前 mkdocs.yml 与 examples/.gitignore。第三位独立源码审查发现的三项语义遗漏,说明前次交叉审未捕获全部图示问题;本次直接追踪 da00 固定源码,独立确认整合者的修正,没有仅凭第三审的结论刷新指纹。
| 变更 | 独立源码依据与复验 |
|---|---|
| 04 第2图:preset 挂载时机 | agent-preset-registry/src/index.ts:80–119 的 register 立即调用 activate,activate 执行 mountPreset;:232–288 的 retain/diagnostic/bindScopeParent 使用已挂载 generation。修图区分定义注册/更新与会话选择,正确;没有把选择画成重新构建插件树 |
| 17 第2图:timed 无 provider | user-questions/src/index.ts:234–272 的 askTimed 捕获 NO_PROVIDER 后 await wait.done,只有 ASK_TIMED_OUT 转 pending/callId;普通 ask 仍抛错。修正文与状态图保留这一区别及取消路径,正确 |
| 17 Schedule 图:receipt 不是执行屏障 | schedule/src/runtime.ts:120–142 先 followup,再 await sessions.flush,之后 commit receipt;agent-loop/src/agent.ts:154–165,214–236 的 followup 在同步 inbox splice 后唤醒 driver。修图以并行分支表达 Agent 可开始执行与 flush/receipt 交错,正确;receipt 仍只确认输入耐久交付 |
| 24 实验与 audit 链接 | 链接指向本轮21项/六阶段的实际 labs-download-check 与 Astra audit;已读取目标记录确认不是旧18项记录。没有扩大成本轮未运行分支 |
| 25 独立报告与交付表 | 三份报告按范围列出,线上收据明确另行生成并以其实际状态为准;不宣称尚未完成的公网交付已通过。source-review-final 由第三审随后生成,本人不为其代写结论 |
| 导航与实验忽略项 | mkdocs 将18–20实践优先、源码与历史记录分组;.gitignore 排除 artifacts,未改变任何可执行实验。生成附录/最终链接存在性仍由整合构建检查负责 |
最终增量复验 PASS。没有实现或依赖变更,因此不重复全套实验;沿用前文明确记录的独立运行证据。已重新计算全部正文、README、mkdocs.yml 与可分发 examples 的 SHA256,排除生成 complete/assets/appendix、报告、node_modules/dist、运行 artifacts/home、环境与缓存,避免循环指纹。