From a8fc62e06331db9f0cf3cc4431ac1ffb6c81fb5b Mon Sep 17 00:00:00 2001 From: Danceiny Date: Sat, 5 Sep 2026 03:16:57 +0400 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=8E=86=E5=8F=B2=20rewrite=20?= =?UTF-8?q?=E5=90=8E=E8=A1=A5=E9=94=9A=E2=80=94=E2=80=94benchmark=20?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=20SHA(5ebddb2/752e54c/c61600b/edb93928)?= =?UTF-8?q?=E6=82=AC=E7=A9=BA=E6=8C=87=E9=92=88=E8=A1=A5=E9=87=8D=E5=86=99?= =?UTF-8?q?=E5=90=8E=E6=96=B0=20SHA(=E5=AF=B9=E7=85=A7=E8=A1=A8=20~/gotry-?= =?UTF-8?q?commit-map-20260904.txt),=E5=8E=86=E5=8F=B2=E5=8E=9F=E6=96=87?= =?UTF-8?q?=E4=BF=9D=E7=95=99;=E7=BA=AF=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/architecture.md | 18 +++++++++--------- docs/stage1-top-down-design.md | 6 +++--- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/architecture.md b/docs/architecture.md index 78f68f4f..29793665 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -79,9 +79,9 @@ M3 最小可用产品,分发链路无已知堵点。 - **HotelByte embedded Booking Copilot 是只读协作面,不是 M5 写闸启封**:`booking.surface.v1` 与 `booking.surface.v2` 共享同一 BFF listener、task ownership 与闭合 typed read-action profile;v2 通过 version+schema hash 逐请求 dispatch。生产 standalone 默认运行 `bff-bound-turn-only`,只接受 deployment-key 认证且已由 BFF 绑定的 `user.turn`/receipt continuation;浏览器 `user.turn.ingress` 只有在完整 authenticated principal/scope + BFF trusted binding seam 下才开放,并原子解析为服务端生成的 `taskId + turnId + contextRef + surface + allowedActions`。bound-turn-only 模式对 ingress 在 ledger/planner 副作用前返回 typed 503;GoTry 不接受浏览器自赋身份或能力。v2 durable ledger 投影包含六个生命周期阶段、七个 phase 字面值(`terminal`/`error` 为两种终态结果),v1 保持 legacy 两态投影;must blocker 只能由绑定 task/context/source turn/action/receipt/presentation key、随机 delivery nonce 与 option digest 的一次性 approval 放行。部署候选固定 exact GoTry SHA/schema 与 Linux glibc + Node 24/ABI provenance,鉴权 health 回显实际进程 identity 与 ingress mode;四 surface 真实库存、不可订重试链与原 Checkout/订单观察仍是外部 UAT gate,未通过前不得宣称产品验收或可合并。 - py 树仅剩 `gotry_feasibility` oracle,产品运行时零 Python 依赖(D-7 清偿)。 - Phase 1 外部 benchmark bridge 默认关闭:仅接受当前 POSIX uid 持有、非 symlink、非 group/world-writable 的绝对 config,固定 executable/cwd/argv 与有限 allowlist,无任意 shell;runner 只收到最小环境,模型参数与输出结构有界,gold/oracle/expected answer/score 等键递归 fail-closed;adapter admission 可按工具配置 `allowed_output_keys` 正向键合同,visible result 出现未声明键即拒绝且不反射。opt-in 只允许 cold-start + headless one-shot:发现 live agent 即拒绝;每个 agent 强制 native、root-captured `gotry_benchmark_environment` definition-only,最终 prompt assembly 与 downstream `agent/pre-step` 双重重验 exact schema/definition,额外工具、同名 shadow 或 PTC transport 漂移均在模型请求前 fail-closed;局部安装自动回滚,agent disposal 释放 scoped effect;若插件先卸载,live agent 保留 fail-closed quarantine,直至 agent/process disposal,HMR 不得在旧 agent 上热挂。Round 3 的 agent conformance 层把 CLI/shell 叙述翻译为 native `query.action=call` 合同,只有 allowed call 的配对成功 result 之后才接受 owner-local `terminal_output` 指定的单一 tagged JSON object;缺 call 或坏终态最多一次模型纠偏,格式纠偏不得重复派发 bridge,第二次失约稳定 fail-closed。parent CLI 对 stdout 有界缓冲并用同一 parser 二次验收,失败正文不出门。config 的 writes forbidden/network denied 仍由 owner/host OS enforcement,synthetic E2E 不证明 OS sandbox;bridge 不携带 hidden query loader,也不把 Python harness 变成产品依赖。Round 2 唯一冻结 treatment 为 diagnostic-only:provider preflight 与 planner exit 0,runner exit 3,evaluation/official scores 为 null,暴露的正是 CLI prompt 与 bridge-only 工具/终态合同不一致;Round 3 尚无新官方分数,不声称 uplift 或 external benchmark closure。 -- Round 3 新冻结 treatment 的 provider preflight 通过且 runner 只派发一次,但 planner/runner 均 exit 1,3.796 秒内停止,parent 释放 0 字节,evaluator 未进入,official scores 仍为 null。Round 4 因而在任何 optional host plugin 解析前把已验证 config 的顶层 insert 投影为唯一 `gotry-tools`,并对 insert 块、gotry plugin name 与 config-path anchor 做唯一性检查;inline/reordered/第二 insert/未来插件、spoofed name、缺失或重复锚点均在 relay 前 fail-closed,default-off 组合不变。Round 4 treatment(SHA `5ebddb2`)primary preflight=pass,但 planner/runner 均在 30.968s 以 exit 1 结束,parent 释放 0 字节,evaluator 未进入,official scores 全为 null;产品 gate 使用 Node v24.20.0,而 treatment 使用 v26.3.0,因此仅 diagnostic-only、无 uplift。GitHub Node 22/24 §48 另暴露 source default-off 30s lifecycle hang。Round 5 仅限移除 timer/keepalive preload、将锁定的 DSH runtime closure 设为 alpha.3、保留源码普通运行的 `ts/dsh-runtime/gotry-state/` 状态连续性、让 benchmark/package 用调用目录隔离,并增加 benchmark-only 结构化诊断 pipe(allowlisted redacted reason codes),stdout 继续 fail-closed;其 frozen treatment(代码 SHA `752e54c`)在 140.715 秒后以 `child_nonzero_exit`、0 terminal bytes、evaluator/official scores null 停止,仅 diagnostic-only,后续纯 lock-consistency 提交不改写该 UID 归属。source 与 clean-package poison E2E 只证明启动合同,不构成 benchmark uplift。 +- Round 3 新冻结 treatment 的 provider preflight 通过且 runner 只派发一次,但 planner/runner 均 exit 1,3.796 秒内停止,parent 释放 0 字节,evaluator 未进入,official scores 仍为 null。Round 4 因而在任何 optional host plugin 解析前把已验证 config 的顶层 insert 投影为唯一 `gotry-tools`,并对 insert 块、gotry plugin name 与 config-path anchor 做唯一性检查;inline/reordered/第二 insert/未来插件、spoofed name、缺失或重复锚点均在 relay 前 fail-closed,default-off 组合不变。Round 4 treatment(SHA `5ebddb2(重写后 0e93eae)`)primary preflight=pass,但 planner/runner 均在 30.968s 以 exit 1 结束,parent 释放 0 字节,evaluator 未进入,official scores 全为 null;产品 gate 使用 Node v24.20.0,而 treatment 使用 v26.3.0,因此仅 diagnostic-only、无 uplift。GitHub Node 22/24 §48 另暴露 source default-off 30s lifecycle hang。Round 5 仅限移除 timer/keepalive preload、将锁定的 DSH runtime closure 设为 alpha.3、保留源码普通运行的 `ts/dsh-runtime/gotry-state/` 状态连续性、让 benchmark/package 用调用目录隔离,并增加 benchmark-only 结构化诊断 pipe(allowlisted redacted reason codes),stdout 继续 fail-closed;其 frozen treatment(代码 SHA `752e54c(重写后 7d6f8a9)`)在 140.715 秒后以 `child_nonzero_exit`、0 terminal bytes、evaluator/official scores null 停止,仅 diagnostic-only,后续纯 lock-consistency 提交不改写该 UID 归属。source 与 clean-package poison E2E 只证明启动合同,不构成 benchmark uplift。 - Round 5 package closure 不变量:package.json、package-lock 与 root pnpm importer 的 DSH 名称集合必须同为 216,且全部以同一 `0.1.2-alpha.3` 精确直接依赖进入 tarball;publish preverify 对漏钉、混版和 range 声明 fail-closed,避免 clean npm/pnpm consumer 在上游发布新 alpha 时产生 prerelease 混装。 -- Round 6 将 benchmark child 的最终 `turn/end.reason` 映射为闭合、脱敏的粗粒度诊断枚举,并通过 per-session 单写仲裁保证 bridge/conformance 专项原因优先于随后出现的通用 runtime 原因。分类只读取结构化 `kind`、allowlisted `code` 与有限 HTTP `status`,不读取或反射 message、stderr、路径、prompt、request id 或凭证;模型重试仅以最终 `turn/end` 为准,恢复成功不产生失败诊断。代码 SHA `c61600b` 的 ChinaTravel frozen treatment(`..._00001`,`deepseek-v4-flash`)在 49.546 秒后稳定报告 `child_runtime_error`,0 terminal bytes,evaluator/official scores null,leakage 与本地凭证/端点扫描均为 0。stdout、重试策略、prompt、工具执行与评分逻辑不变;该工程变化与诊断证据本身不构成 benchmark uplift。 +- Round 6 将 benchmark child 的最终 `turn/end.reason` 映射为闭合、脱敏的粗粒度诊断枚举,并通过 per-session 单写仲裁保证 bridge/conformance 专项原因优先于随后出现的通用 runtime 原因。分类只读取结构化 `kind`、allowlisted `code` 与有限 HTTP `status`,不读取或反射 message、stderr、路径、prompt、request id 或凭证;模型重试仅以最终 `turn/end` 为准,恢复成功不产生失败诊断。代码 SHA `c61600b(重写后 ea678f8)` 的 ChinaTravel frozen treatment(`..._00001`,`deepseek-v4-flash`)在 49.546 秒后稳定报告 `child_runtime_error`,0 terminal bytes,evaluator/official scores null,leakage 与本地凭证/端点扫描均为 0。stdout、重试策略、prompt、工具执行与评分逻辑不变;该工程变化与诊断证据本身不构成 benchmark uplift。 - **Round 7 minimal kernel(代码 SHA `edb9392896625adbb48abae4a2ecf968dbfc0349`)**:benchmark opt-in 仅保留 tool budget、model override、唯一 bridge、tool isolation/conformance;产品 prompt variables、process guards、consent hooks 与普通 GoTry tools 均不装,默认路径不变。CLI 对 system-prompt 做稳定、task-agnostic persona 投影,并要求 root patch 仅含 canonical `- insert:` 与 `- id: system-prompt` 各一;缺失、重复、quoted/reordered/flow/noncanonical root item 均 fail-closed。ChinaTravel frozen treatment UID `e20241028160248698752`(case `easy`,`deepseek-v4-flash`)preflight pass、未回退,80.463s 后 runner exit 1,terminal 0 bytes/invalid,evaluator 未进入、official null、不可计分、无 uplift/外部 benchmark closure;白名单归因为 `child_bridge_runner_failed`。下一轮聚焦 generic bridge tool schema 与可恢复 domain-error contract,不改 provider routing/scoring。 - 全栈回归见 `scripts/run-all-tests.sh` 分节(计数不落字)。 @@ -95,9 +95,9 @@ Evaluation Phase 0 foundation boundary: contracts/registry/validators/unmatched Phase 1 外部 benchmark bridge 默认关闭:owner-local config、固定 direct argv/allowlist、最小 runner 环境、参数/输出结构上限、递归 no-oracle 键拒绝与可选 per-tool `allowed_output_keys` 正向键合同都由产品 seam 执行;opt-in 仅接受 cold-start + headless one-shot,并把每个 agent 固定为 native、原始 bridge definition-only,最终 assembly 与 downstream pre-step 任一 surface 漂移都 fail-closed。Round 3 conformance 把 prompt 中 CLI/shell/Python 操作映射为 allowed native `query.action=call`,只有配对成功 result 后才接受 owner-local `terminal_output` 指定的单一 tagged JSON object;缺 call 或坏终态最多一次纠偏,格式纠偏不再派发 bridge,headless parent 用同一 parser 二次验收 stdout。agent disposal 释放 scoped effect;插件先卸载时 live agent 保持 quarantine 至 agent/process disposal,HMR 不热挂。writes forbidden/network denied 仍必须由 owner/host OS enforce,synthetic E2E 不证明 OS sandbox。bridge 不携带 hidden query loader,不把 Python harness 变成产品依赖。Round 2 唯一冻结 treatment 只得到 diagnostic-only 终态,evaluation/official scores 为 null;Round 3 尚无官方分数。 -Round 4 startup composition 只在 benchmark opt-in 生效:config 先验证,patch 顶层 insert 再投影为唯一 `gotry-tools`,随后才允许继续启动;任何第二 insert、伪装 gotry name、allowlist/config-path anchor 缺失或重复都以稳定泛化错误在 relay 前拒绝。普通 GoTry default-off 的 calendar/map/ask-user 与未来插件组合保持原行为。Round 4 treatment(SHA `5ebddb2`)primary preflight=pass,但 planner/runner 均在 30.968s 以 exit 1 结束,释放 0 字节,evaluator 未进入,official scores 全为 null;产品 gate 使用 Node v24.20.0,而 treatment 使用 v26.3.0,因此仅 diagnostic-only、无 uplift。GitHub Node 22/24 §48 另暴露 source default-off 30s lifecycle hang。Round 5 仅限移除 timer/keepalive preload、将锁定的 DSH runtime closure 设为 alpha.3、保留源码普通运行的 `ts/dsh-runtime/gotry-state/` 状态连续性、让 benchmark/package 用调用目录隔离,并增加 benchmark-only 结构化诊断 pipe(allowlisted redacted reason codes),stdout 继续 fail-closed;其 frozen treatment(代码 SHA `752e54c`)在 140.715 秒后以 `child_nonzero_exit`、0 terminal bytes、evaluator/official scores null 停止,仅 diagnostic-only,后续纯 lock-consistency 提交不改写该 UID 归属。 +Round 4 startup composition 只在 benchmark opt-in 生效:config 先验证,patch 顶层 insert 再投影为唯一 `gotry-tools`,随后才允许继续启动;任何第二 insert、伪装 gotry name、allowlist/config-path anchor 缺失或重复都以稳定泛化错误在 relay 前拒绝。普通 GoTry default-off 的 calendar/map/ask-user 与未来插件组合保持原行为。Round 4 treatment(SHA `5ebddb2(重写后 0e93eae)`)primary preflight=pass,但 planner/runner 均在 30.968s 以 exit 1 结束,释放 0 字节,evaluator 未进入,official scores 全为 null;产品 gate 使用 Node v24.20.0,而 treatment 使用 v26.3.0,因此仅 diagnostic-only、无 uplift。GitHub Node 22/24 §48 另暴露 source default-off 30s lifecycle hang。Round 5 仅限移除 timer/keepalive preload、将锁定的 DSH runtime closure 设为 alpha.3、保留源码普通运行的 `ts/dsh-runtime/gotry-state/` 状态连续性、让 benchmark/package 用调用目录隔离,并增加 benchmark-only 结构化诊断 pipe(allowlisted redacted reason codes),stdout 继续 fail-closed;其 frozen treatment(代码 SHA `752e54c(重写后 7d6f8a9)`)在 140.715 秒后以 `child_nonzero_exit`、0 terminal bytes、evaluator/official scores null 停止,仅 diagnostic-only,后续纯 lock-consistency 提交不改写该 UID 归属。 -Round 6 只观察最终结构化 `turn/end`,以 per-session 单写仲裁把失败投影为闭合、脱敏的 coarse enum,bridge/conformance 专项原因优先,恢复成功的 transient retry 零失败输出。代码 SHA `c61600b` 的 ChinaTravel 冻结 treatment(`..._00001`,`deepseek-v4-flash`)在 49.546 秒后稳定报告 `child_runtime_error`,0 terminal bytes,evaluator/official scores null,leakage 与本地凭证/端点扫描均为 0。该结果只消除了 `child_nonzero_exit` 的归因歧义,不产生 score/uplift 结论;后续纯文档 successor 不改写 treatment 归属。 +Round 6 只观察最终结构化 `turn/end`,以 per-session 单写仲裁把失败投影为闭合、脱敏的 coarse enum,bridge/conformance 专项原因优先,恢复成功的 transient retry 零失败输出。代码 SHA `c61600b(重写后 ea678f8)` 的 ChinaTravel 冻结 treatment(`..._00001`,`deepseek-v4-flash`)在 49.546 秒后稳定报告 `child_runtime_error`,0 terminal bytes,evaluator/official scores null,leakage 与本地凭证/端点扫描均为 0。该结果只消除了 `child_nonzero_exit` 的归因歧义,不产生 score/uplift 结论;后续纯文档 successor 不改写 treatment 归属。 ## 2. 总体架构:五层与现状 @@ -334,10 +334,10 @@ Booking Copilot 是既有工作台内的 BFF-only embedded read-action 面:v1 - **Evaluation → Agent 优化 Round 1(Discussion #78,ChinaTravel canary 反馈)**:冻结 grounding-v3 canary 的首例终态通过,第二例暴露 planner 在重复工具调用中超过 300s;因此不生成 5-query 聚合。GoTry 侧把收敛边界下沉到 `tools/execute`:16 次软提示、18 次 body 上限、同一步第 19 次起结构化拒绝,并在 `step/end` 让下一步 native request text-only。Round 1 treatment-attested installed GoTry 已实际运行,exact DeepSeek 因 environment unavailable/schema-invalid 得 0,GLM 为 300s timeout。run-all §45 同时覆盖 Cordis integration/并行/生命周期与真实 `bin/gotry-inner.js → dist → dsh headless` 离线 E2E(18 个正常结果、1 个结构化拒绝、下一请求零工具 schema、非空 final);CI 对当前 SHA 打包并在隔离 pnpm consumer 中安装,由 `GOTRY_BUDGET_E2E_BIN` 重放同一链路。frozen ChinaTravel treatment 与 5-query 恢复仍是 D-28 外部验收,离线 runtime E2E 不替代 benchmark evidence。**Round 1 后续(ADR-24 v2)**:真实轨迹(dsh 用户安排行程)显示任何「到点杀 turn」形态的闸——步数或固定 wall-clock——都会复现同一失败:模型在同 step 回环拒绝结果、token 截断、用户拿不到答复。最终形态是「路由 + wall-clock 双出口」:确定性分类器(`turn-policy.ts`,零 LLM,Tier 0 信号)把每轮分为 quick/sync/deep 并产出 TurnPolicy;deep-planning 硬阈出口是 handoff——落 `gotry_turn_handoff.v1` 工单并告知用户 ETA 与回访方式,而非逼出一个没有证据的 final。产品路径默认装(路由+handoff 是产品行为),benchmark opt-in 钉固定 policy 保可复现;run-all §45 = 路由表测(轨迹原文为回归锚点)+ Cordis 集成 + 打包二进制 headless E2E(handoff 结果/工单落隔离根/最终请求 text-only/非空 final)。handoff 工单的收集闭环已于同日补全:`scripts/turn-handoff-collect.ts`(GOTRY_HANDOFF_CHILD 递归防护 + 幂等结算 + gotry_turn_handoff_terminal.v1 终态)+ 只读复访工具 `gotry_turn_handoff_list`,§45 E2E 以真打包二进制跑通「handoff→收集→settled→交付物」全链。 - **Evaluation → Phase 1 environment bridge (Round 2)**:新增 default-off、owner-local config 与 host-enforced isolation contract;产品 seam 执行固定 direct argv/allowlist、最小 runner 环境、参数/输出结构上限、递归 no-oracle 键拒绝与可选 per-tool `allowed_output_keys` 正向键合同,未声明 visible-output 键 fail-closed 且不反射。benchmark opt-in 只允许 cold-start;agent 被强制为 native、原始 bridge definition-only,最终 assembly 与 downstream pre-step 双重核验 exact tool surface,same-name shadow/额外 schema/PTC 漂移均拒绝。双层 effect 覆盖局部回滚与 agent disposal;插件先卸载时不解除 live agent 的 guard/restriction,而保留 fail-closed quarantine 到 agent/process disposal,HMR 不热挂。writes/network 仍由 owner/host OS enforce,synthetic E2E 不证明 OS sandbox。unit + model-driven source/installed-package synthetic E2E 已覆盖注册、allowlist、argv、marker history、环境隔离、正向输出合同、真实 timeout/truncation 与 final text。它只提供显式 benchmark CLI seam,不调度、不花费、不读取 hidden query loader,也不引入 Python 产品依赖。唯一冻结 treatment 已到终态但只计 diagnostic-only:provider preflight PASS,planner exit 0 / 30.826s,runner exit 3,evaluation 与 official scores 均 null,forbidden hits 0,attestation/cleanup PASS。agent 只叙述想走 CLI/工具,没有 structured bridge call 与 tagged JSON;因此 evaluator 未执行,本轮无 uplift([Round 2 evidence](https://github.com/Danceiny/gotry/discussions/78#discussioncomment-18215707))。 - **Evaluation → Agent conformance (Round 3)**:在 bridge/adapter 之外新增 provider-neutral conformance 层。owner-local config 必须声明通用 `terminal_output` tag/size 合同;system section 明确把 prompt 内 CLI/shell/Python 操作映射为唯一 native bridge 的 `query:{action:"call",tool,arguments}`。只有 allowed action-call 的配对成功 result 之后,单一 tagged JSON object 才能结束 turn。无 call 或终态格式错误最多一次固定 steer;格式纠偏复用历史 result 并禁止再次执行 bridge,二次失约以稳定 code fail-closed。headless parent 对 stdout 有界捕获并用同一 parser 验收,未通过的正文不转发。新 frozen treatment 的 provider preflight 通过、runner 只派发一次,但 planner/runner exit 1、parent 终态 0 字节、evaluator 未进入、official scores 为 null;该证据把下一处缺口定位到 benchmark child/plugin startup,不构成 uplift。 -- **Evaluation → Startup composition isolation (Round 4)**:owner-local config 验证后、任何 optional host plugin 解析/导入前,CLI 把顶层 insert 投影为唯一 `gotry-tools`;inline/reordered/未来 non-GoTry sibling 安全裁掉。顶层 insert 必须恰好一块,gotry plugin name 与 config-path 注入锚点必须恰好一次;第二 insert、spoofed name、缺失/重复 allowlist 或 anchor 均在 relay 前稳定 fail-closed。default-off 普通组合不变。source/clean-installed E2E 用两个真实执行 poison 分别覆盖 inline/reordered future plugin,并覆盖第二 insert、spoofed name 与 anchor 漂移。Round 4 treatment(SHA `5ebddb2`)primary preflight=pass,但 planner/runner 均在 30.968s 以 exit 1 结束,释放 0 字节,evaluator 未进入,official scores 全为 null;产品 gate 使用 Node v24.20.0,而 treatment 使用 v26.3.0,因此仅 diagnostic-only、无 uplift。 -- **Evaluation → Headless lifecycle containment (Round 5)**:Round 5 仅限移除 timer/keepalive preload、将锁定的 DSH runtime closure 设为 alpha.3、保留源码普通运行的 `ts/dsh-runtime/gotry-state/` 状态连续性、让 benchmark/package 用调用目录隔离,并增加 benchmark-only 结构化诊断 pipe(allowlisted redacted reason codes),stdout 继续 fail-closed;其 frozen treatment(代码 SHA `752e54c`)在 140.715 秒后以 `child_nonzero_exit`、0 terminal bytes、evaluator/official scores null 停止,仅 diagnostic-only,后续纯 lock-consistency 提交不改写该 UID 归属。GitHub Node 22/24 §48 已暴露 source default-off 30s lifecycle hang;Round 5 不据此宣称 benchmark score 或 external closure。 +- **Evaluation → Startup composition isolation (Round 4)**:owner-local config 验证后、任何 optional host plugin 解析/导入前,CLI 把顶层 insert 投影为唯一 `gotry-tools`;inline/reordered/未来 non-GoTry sibling 安全裁掉。顶层 insert 必须恰好一块,gotry plugin name 与 config-path 注入锚点必须恰好一次;第二 insert、spoofed name、缺失/重复 allowlist 或 anchor 均在 relay 前稳定 fail-closed。default-off 普通组合不变。source/clean-installed E2E 用两个真实执行 poison 分别覆盖 inline/reordered future plugin,并覆盖第二 insert、spoofed name 与 anchor 漂移。Round 4 treatment(SHA `5ebddb2(重写后 0e93eae)`)primary preflight=pass,但 planner/runner 均在 30.968s 以 exit 1 结束,释放 0 字节,evaluator 未进入,official scores 全为 null;产品 gate 使用 Node v24.20.0,而 treatment 使用 v26.3.0,因此仅 diagnostic-only、无 uplift。 +- **Evaluation → Headless lifecycle containment (Round 5)**:Round 5 仅限移除 timer/keepalive preload、将锁定的 DSH runtime closure 设为 alpha.3、保留源码普通运行的 `ts/dsh-runtime/gotry-state/` 状态连续性、让 benchmark/package 用调用目录隔离,并增加 benchmark-only 结构化诊断 pipe(allowlisted redacted reason codes),stdout 继续 fail-closed;其 frozen treatment(代码 SHA `752e54c(重写后 7d6f8a9)`)在 140.715 秒后以 `child_nonzero_exit`、0 terminal bytes、evaluator/official scores null 停止,仅 diagnostic-only,后续纯 lock-consistency 提交不改写该 UID 归属。GitHub Node 22/24 §48 已暴露 source default-off 30s lifecycle hang;Round 5 不据此宣称 benchmark score 或 external closure。 - **Round 5 runtime resolution**:source checkout 与 npm package 都解析同一组 216 个精确直接依赖的 DSH `0.1.2-alpha.3` closure;manifest、package-lock 与 root pnpm importer 的 DSH 名称集合必须同为 216,publish preverify 对漏钉、混版或 range 声明 fail-closed。source 普通运行的 dsh cwd 保持 `ts/dsh-runtime/`,状态继续落 `ts/dsh-runtime/gotry-state/`,benchmark opt-in 与 npm package 使用调用目录隔离;legacy `ts/dsh-runtime` alpha.1 仅保留为非 benchmark 解析兼容,不承诺可运行。benchmark 在 spawn 前验证实际 DSH 版本,漂移即稳定非零拒绝;Node 下界统一为 22.15,并在任何 DSH import/spawn 前拒绝旧版本。 -- **Evaluation → Structured terminal diagnostics (Round 6)**:benchmark-only conformance 监听真实 session 的最终 `turn/end`,把 model auth/capacity/server/transport/stream/request、generic runtime 以及 blocked/max-tokens/aborted/interrupted 投影为固定 enum;未知 code 与所有自由文本统一收敛为 generic,不跨 FD3。per-session arbiter 在最终 turn end 才单次写入,bridge/conformance reason 的优先级更高,成功恢复的 transient retry 零写入。代码 SHA `c61600b` 的 ChinaTravel 冻结 treatment(`..._00001`,`deepseek-v4-flash`)在 49.546 秒后稳定报告 `child_runtime_error`,0 terminal bytes,evaluator/official scores null,leakage 与本地凭证/端点扫描均为 0;该 evidence 只改善失败归因,不改 agent 决策、重试、工具或 evaluator,也不产生 uplift。 +- **Evaluation → Structured terminal diagnostics (Round 6)**:benchmark-only conformance 监听真实 session 的最终 `turn/end`,把 model auth/capacity/server/transport/stream/request、generic runtime 以及 blocked/max-tokens/aborted/interrupted 投影为固定 enum;未知 code 与所有自由文本统一收敛为 generic,不跨 FD3。per-session arbiter 在最终 turn end 才单次写入,bridge/conformance reason 的优先级更高,成功恢复的 transient retry 零写入。代码 SHA `c61600b(重写后 ea678f8)` 的 ChinaTravel 冻结 treatment(`..._00001`,`deepseek-v4-flash`)在 49.546 秒后稳定报告 `child_runtime_error`,0 terminal bytes,evaluator/official scores null,leakage 与本地凭证/端点扫描均为 0;该 evidence 只改善失败归因,不改 agent 决策、重试、工具或 evaluator,也不产生 uplift。 - **Evaluation → Minimal benchmark kernel (Round 7)**:代码 SHA `edb9392896625adbb48abae4a2ecf968dbfc0349` 将 benchmark opt-in 收敛为 tool budget、model override、唯一 bridge、isolation/conformance;不装产品 prompt variables、process guards、consent 或普通工具,normal path 不变。system-prompt 投影为稳定 task-agnostic persona,root patch 仅接受 canonical `insert` 与 `system-prompt` 各一,其他 root item/变体 fail-closed。UID `e20241028160248698752`(`easy`,`deepseek-v4-flash`)preflight pass、未回退,80.463s 后 runner exit 1、terminal 0 bytes/invalid,evaluator 未进入、official null、不可计分、无 uplift/外部 closure;原因稳定为 `child_bridge_runner_failed`。下一轮问题是 generic bridge schema 与可恢复 domain-error contract。 - **时间感优化(2026-08-27,外部时间评测驱动)**:时间锚点层(算术进代码,LLM 查卡不自算)+ 槽位抽取 v1(逐字保留)+ 25 题评测集与评分脚本落地,ADR-11 质量层首块兑现(原定 M3,迟到的落地);真模型(deepseek-chat)25/25。slot→spec 求解桥接未做(D-10)。 - **tsc 存量清零 + loopx RFC 专项(2026-08-27)**: @@ -477,9 +477,9 @@ Evaluation Phase 0 foundation boundary: contracts/registry/validators/unmatched **D-28 外部 benchmark 驱动的 Agent 泛化证据缺口** -ChinaTravel grounding-v3 的冻结 5-query canary 只完成 1 个可评分终态,第二例在 planner 重复工具调用中触发 300s timeout;因此当前没有合法 5-query 聚合。Round 1 已增加 GoTry 每轮工具预算与 text-only 收敛边界,且 npm-mode dist + dsh headless 离线 E2E 证明真实 runtime 会执行 18 个 body、结构化拒绝同批第 19 次、随后无工具完成 final;Round 1 exact DeepSeek treatment 仍为 environment unavailable/schema-invalid 0,另一个 GLM run 为 300s timeout。Round 2 bridge 已通过 unit 与 model-driven source/installed-package synthetic E2E,并加入 per-tool 正向输出键合同及 cold-start/native/exact-definition-only 工具隔离;其唯一冻结 treatment 的 provider/planner 正常,但 agent 没有产生 structured bridge call 与 tagged JSON,runner 在 evaluator 前退出,official scores 全为 null。Round 3 以 provider-neutral conformance 修复 CLI→native call、成功 result 配对、一次固定纠偏、格式纠偏零重复派发与 parent tagged-JSON stdout 闸;其新冻结 treatment 仍以 planner/runner exit 1、0 字节终态停在 evaluator 前。Round 4 再把 benchmark 启动投影为唯一 `gotry-tools`,并对 insert/plugin-name/config-path 锚点全链 fail-closed;其 treatment(SHA `5ebddb2`)primary preflight=pass,但 planner/runner 均在 30.968s 以 exit 1 结束,释放 0 字节,evaluator 未进入,official scores 全为 null;产品 gate 使用 Node v24.20.0,而 treatment 使用 v26.3.0,因此仅 diagnostic-only、无 uplift。GitHub Node 22/24 §48 另暴露 source default-off 30s lifecycle hang。Round 5 仅限移除 timer/keepalive preload、将锁定的 DSH runtime closure 设为 alpha.3、保留源码普通运行的 `ts/dsh-runtime/gotry-state/` 状态连续性、让 benchmark/package 用调用目录隔离,并增加 benchmark-only 结构化诊断 pipe(allowlisted redacted reason codes),stdout 继续 fail-closed;其 frozen treatment(代码 SHA `752e54c`)在 140.715 秒后以 `child_nonzero_exit`、0 terminal bytes、evaluator/official scores null 停止,仅 diagnostic-only,后续纯 lock-consistency 提交不改写该 UID 归属。**赎回顺序**:source/installed startup+conformance 合同与全回归通过 → 新冻结 case 在 no-oracle 边界下 `exit=0`、非空 terminal、planner<300s且 evaluator 执行 → 原 manifest 5/5 终态且 schema/forbidden/七指标完整 → 按 registry 扩展其他公开 benchmark并在 3–5 个独立优化 PR 后综合归因;在匹配 evidence 前不声称分数提升或 external closure。 +ChinaTravel grounding-v3 的冻结 5-query canary 只完成 1 个可评分终态,第二例在 planner 重复工具调用中触发 300s timeout;因此当前没有合法 5-query 聚合。Round 1 已增加 GoTry 每轮工具预算与 text-only 收敛边界,且 npm-mode dist + dsh headless 离线 E2E 证明真实 runtime 会执行 18 个 body、结构化拒绝同批第 19 次、随后无工具完成 final;Round 1 exact DeepSeek treatment 仍为 environment unavailable/schema-invalid 0,另一个 GLM run 为 300s timeout。Round 2 bridge 已通过 unit 与 model-driven source/installed-package synthetic E2E,并加入 per-tool 正向输出键合同及 cold-start/native/exact-definition-only 工具隔离;其唯一冻结 treatment 的 provider/planner 正常,但 agent 没有产生 structured bridge call 与 tagged JSON,runner 在 evaluator 前退出,official scores 全为 null。Round 3 以 provider-neutral conformance 修复 CLI→native call、成功 result 配对、一次固定纠偏、格式纠偏零重复派发与 parent tagged-JSON stdout 闸;其新冻结 treatment 仍以 planner/runner exit 1、0 字节终态停在 evaluator 前。Round 4 再把 benchmark 启动投影为唯一 `gotry-tools`,并对 insert/plugin-name/config-path 锚点全链 fail-closed;其 treatment(SHA `5ebddb2(重写后 0e93eae)`)primary preflight=pass,但 planner/runner 均在 30.968s 以 exit 1 结束,释放 0 字节,evaluator 未进入,official scores 全为 null;产品 gate 使用 Node v24.20.0,而 treatment 使用 v26.3.0,因此仅 diagnostic-only、无 uplift。GitHub Node 22/24 §48 另暴露 source default-off 30s lifecycle hang。Round 5 仅限移除 timer/keepalive preload、将锁定的 DSH runtime closure 设为 alpha.3、保留源码普通运行的 `ts/dsh-runtime/gotry-state/` 状态连续性、让 benchmark/package 用调用目录隔离,并增加 benchmark-only 结构化诊断 pipe(allowlisted redacted reason codes),stdout 继续 fail-closed;其 frozen treatment(代码 SHA `752e54c(重写后 7d6f8a9)`)在 140.715 秒后以 `child_nonzero_exit`、0 terminal bytes、evaluator/official scores null 停止,仅 diagnostic-only,后续纯 lock-consistency 提交不改写该 UID 归属。**赎回顺序**:source/installed startup+conformance 合同与全回归通过 → 新冻结 case 在 no-oracle 边界下 `exit=0`、非空 terminal、planner<300s且 evaluator 执行 → 原 manifest 5/5 终态且 schema/forbidden/七指标完整 → 按 registry 扩展其他公开 benchmark并在 3–5 个独立优化 PR 后综合归因;在匹配 evidence 前不声称分数提升或 external closure。 -Round 6 只把最终结构化 `turn/end` 细分为闭合、脱敏的原因族,并用 per-session 单写仲裁保留更具体的 bridge/conformance 原因;它不解析 raw stderr,也不修改重试、prompt、工具或 scorer。代码 SHA `c61600b` 的新 frozen treatment 在 49.546 秒后把此前泛化的 `child_nonzero_exit` 收敛为 `child_runtime_error`,但仍为 0 terminal bytes、evaluator/official scores null;因此 D-28 仍开放,当前不产生 score/uplift 结论。 +Round 6 只把最终结构化 `turn/end` 细分为闭合、脱敏的原因族,并用 per-session 单写仲裁保留更具体的 bridge/conformance 原因;它不解析 raw stderr,也不修改重试、prompt、工具或 scorer。代码 SHA `c61600b(重写后 ea678f8)` 的新 frozen treatment 在 49.546 秒后把此前泛化的 `child_nonzero_exit` 收敛为 `child_runtime_error`,但仍为 0 terminal bytes、evaluator/official scores null;因此 D-28 仍开放,当前不产生 score/uplift 结论。 Round 7 将 benchmark opt-in 收敛为 minimal kernel,并把 system-prompt/root patch 做成稳定 task-agnostic、canonical fail-closed 投影;默认路径不变。代码 SHA `edb9392896625adbb48abae4a2ecf968dbfc0349` 的 ChinaTravel frozen treatment UID `e20241028160248698752`(`easy`,`deepseek-v4-flash`)80.463s 后 runner exit 1、terminal 0 bytes/invalid,evaluator 未进入、official null、不可计分;白名单归因为 `child_bridge_runner_failed`,不产生 uplift 或 external closure。下一轮只研究 generic bridge tool schema 与可恢复 domain-error contract。 ### 10.2 已清偿(存档) diff --git a/docs/stage1-top-down-design.md b/docs/stage1-top-down-design.md index bedabf39..0cd30bae 100644 --- a/docs/stage1-top-down-design.md +++ b/docs/stage1-top-down-design.md @@ -13,10 +13,10 @@ - 2026-09-03 起,检索通道编排收敛为通道注册表 + 健康面(ADR-25,issue #106/#107/#108):persona 路由卡 `{{channel_routing_card}}` 与工具结果内 `routing` 建议由 `channel-registry.ts` 生成,本文涉及 persona (19) 工具枚举的表述以该卡为准;dsh-calendar 默认不挂载(D-9)。 - S2 mock 切片 ✅ / S3 求解挂载 ✅ / S4 真 LLM ✅(MiniMax-M2,`bb880f3`)/ S5 编排+持久化 ✅(详见 `architecture.md` §9,那里是唯一的当前状态源);本文保留设计原文供追溯。**M1/M2 已退出;M3 工程面已就绪但真实种子用户 evidence 未收口,M3 Exit 仍开放;M4 由 founder 授权并行推进,不构成 M3 Exit 证明;M5/M6 仍受各自 Entry gate 约束。 - HotelByte Booking Copilot 是独立的产品验收并行线:GoTry 以 v1/v2 共用单 listener 与 task ownership 的 BFF-only typed read-action planner;v2 使用六个生命周期阶段、七个 phase 字面值(`terminal`/`error` 是两种终态结果)的 durable projection,生产 standalone 默认只接受 BFF 已绑定的 `user.turn`/receipt continuation,完整 principal + binding seam 才开放 `user.turn.ingress`,v1 保持 legacy 两态。部署候选绑定 exact SHA/schema/Linux Node 24+ABI provenance,并从鉴权 health 回显实际进程 identity 与 ingress mode;它不暴露 `Book`、不启封 M5。tenant/customer/storefront/payment-link 的真实库存与 unavailable/changed 恢复链仍待 UAT,因此保持 Draft、不可合并。 -- Discussion #78 的 external benchmark 反馈已进入 S5 编排边界:每轮第 16 次真实工具派发注入软收敛,第 18 次是最后一个 body,同一步第 19 次起结构化拒绝;该批 `step/end` 后下一次 native request 抑制继承工具 schema。run-all §45 以 Cordis contracts + npm-mode dist/dsh headless 离线 E2E 固定真实 runtime 行为,CI 另由当前 SHA tarball 的隔离 pnpm consumer 入口重放。Round 1 的 exact DeepSeek 为 environment unavailable/schema-invalid 0,GLM 为 300s timeout;Round 2 唯一冻结 treatment 只到 diagnostic-only。Round 3 聚焦 CLI→native 调用与 tagged-JSON 终态 conformance,但新冻结 treatment 在 runner 单次派发后 planner/runner exit 1、0 字节终态、evaluator 未进入。Round 4 treatment(SHA `5ebddb2`)primary preflight=pass,但 planner/runner 均在 30.968s 以 exit 1 结束,释放 0 字节,evaluator 未进入;产品 gate 使用 Node v24.20.0,而 treatment 使用 v26.3.0,因此仅 diagnostic-only、无 uplift。GitHub Node 22/24 §48 另暴露 source default-off 30s lifecycle hang。Round 5 仅限移除 timer/keepalive preload、将锁定的 DSH runtime closure 设为 alpha.3、保留源码普通运行的 `ts/dsh-runtime/gotry-state/` 状态连续性、让 benchmark/package 用调用目录隔离,并增加 benchmark-only 结构化诊断 pipe(allowlisted redacted reason codes),stdout 继续 fail-closed;其 frozen treatment(代码 SHA `752e54c`)在 140.715 秒后以 `child_nonzero_exit`、0 terminal bytes、evaluator/official scores null 停止,仅 diagnostic-only,后续纯 lock-consistency 提交不改写该 UID 归属,不把离线 E2E 宣称为 benchmark 改善。 -- Phase 1 environment bridge 当前态:default-off owner-local config,固定 executable/cwd/argv_prefix/allowlist 与 timeout/output caps,可选 per-tool `allowed_output_keys` 正向 visible-output 键合同对未声明键 fail-closed 且不反射。benchmark opt-in 是 cold-start + headless one-shot 进程边界,不能热挂 live agent;每次请求仅允许 native、原始 bridge definition-only surface,最终 assembly 与 downstream pre-step 双闸 fail-closed。Round 3 conformance 要求至少一次 allowed `query.action=call` 及其配对成功 result,随后只接受 owner-local `terminal_output` 指定的单一 tagged JSON object;缺 call 或坏终态最多一次固定纠偏,格式纠偏禁止重复派发 bridge,parent stdout 再过同一 parser。Round 4 在 optional plugin 解析前把 benchmark 顶层 insert 投影为唯一 `gotry-tools`,未知/未来 sibling 安全裁掉;allowlist 与 config-path anchor 缺失/重复均在 dsh spawn/relay 前 fail-closed,default-off 组合不变。局部安装回滚与 agent disposal 属 S5 双层 effect 合同;插件先卸载时 live agent 保持 fail-closed quarantine 到 agent/process disposal,HMR 不热挂。config 要求 writes forbidden/network denied,但实际 enforcement 由 owner/host OS 负责,synthetic E2E 不证明 OS sandbox。Round 4 treatment(SHA `5ebddb2`)primary preflight=pass,但 planner/runner 均在 30.968s 以 exit 1 结束,释放 0 字节,evaluator 未进入,official scores 全为 null;产品 gate 使用 Node v24.20.0,而 treatment 使用 v26.3.0,因此仅 diagnostic-only、无 uplift。GitHub Node 22/24 §48 另暴露 source default-off 30s lifecycle hang。Round 5 仅限移除 timer/keepalive preload、将锁定的 DSH runtime closure 设为 alpha.3、保留源码普通运行的 `ts/dsh-runtime/gotry-state/` 状态连续性、让 benchmark/package 用调用目录隔离,并增加 benchmark-only 结构化诊断 pipe(allowlisted redacted reason codes),stdout 继续 fail-closed;其 frozen treatment(代码 SHA `752e54c`)在 140.715 秒后以 `child_nonzero_exit`、0 terminal bytes、evaluator/official scores null 停止,仅 diagnostic-only,后续纯 lock-consistency 提交不改写该 UID 归属。Phase 0 foundation 的 deterministic planning/admission 边界不变。 +- Discussion #78 的 external benchmark 反馈已进入 S5 编排边界:每轮第 16 次真实工具派发注入软收敛,第 18 次是最后一个 body,同一步第 19 次起结构化拒绝;该批 `step/end` 后下一次 native request 抑制继承工具 schema。run-all §45 以 Cordis contracts + npm-mode dist/dsh headless 离线 E2E 固定真实 runtime 行为,CI 另由当前 SHA tarball 的隔离 pnpm consumer 入口重放。Round 1 的 exact DeepSeek 为 environment unavailable/schema-invalid 0,GLM 为 300s timeout;Round 2 唯一冻结 treatment 只到 diagnostic-only。Round 3 聚焦 CLI→native 调用与 tagged-JSON 终态 conformance,但新冻结 treatment 在 runner 单次派发后 planner/runner exit 1、0 字节终态、evaluator 未进入。Round 4 treatment(SHA `5ebddb2(重写后 0e93eae)`)primary preflight=pass,但 planner/runner 均在 30.968s 以 exit 1 结束,释放 0 字节,evaluator 未进入;产品 gate 使用 Node v24.20.0,而 treatment 使用 v26.3.0,因此仅 diagnostic-only、无 uplift。GitHub Node 22/24 §48 另暴露 source default-off 30s lifecycle hang。Round 5 仅限移除 timer/keepalive preload、将锁定的 DSH runtime closure 设为 alpha.3、保留源码普通运行的 `ts/dsh-runtime/gotry-state/` 状态连续性、让 benchmark/package 用调用目录隔离,并增加 benchmark-only 结构化诊断 pipe(allowlisted redacted reason codes),stdout 继续 fail-closed;其 frozen treatment(代码 SHA `752e54c(重写后 7d6f8a9)`)在 140.715 秒后以 `child_nonzero_exit`、0 terminal bytes、evaluator/official scores null 停止,仅 diagnostic-only,后续纯 lock-consistency 提交不改写该 UID 归属,不把离线 E2E 宣称为 benchmark 改善。 +- Phase 1 environment bridge 当前态:default-off owner-local config,固定 executable/cwd/argv_prefix/allowlist 与 timeout/output caps,可选 per-tool `allowed_output_keys` 正向 visible-output 键合同对未声明键 fail-closed 且不反射。benchmark opt-in 是 cold-start + headless one-shot 进程边界,不能热挂 live agent;每次请求仅允许 native、原始 bridge definition-only surface,最终 assembly 与 downstream pre-step 双闸 fail-closed。Round 3 conformance 要求至少一次 allowed `query.action=call` 及其配对成功 result,随后只接受 owner-local `terminal_output` 指定的单一 tagged JSON object;缺 call 或坏终态最多一次固定纠偏,格式纠偏禁止重复派发 bridge,parent stdout 再过同一 parser。Round 4 在 optional plugin 解析前把 benchmark 顶层 insert 投影为唯一 `gotry-tools`,未知/未来 sibling 安全裁掉;allowlist 与 config-path anchor 缺失/重复均在 dsh spawn/relay 前 fail-closed,default-off 组合不变。局部安装回滚与 agent disposal 属 S5 双层 effect 合同;插件先卸载时 live agent 保持 fail-closed quarantine 到 agent/process disposal,HMR 不热挂。config 要求 writes forbidden/network denied,但实际 enforcement 由 owner/host OS 负责,synthetic E2E 不证明 OS sandbox。Round 4 treatment(SHA `5ebddb2(重写后 0e93eae)`)primary preflight=pass,但 planner/runner 均在 30.968s 以 exit 1 结束,释放 0 字节,evaluator 未进入,official scores 全为 null;产品 gate 使用 Node v24.20.0,而 treatment 使用 v26.3.0,因此仅 diagnostic-only、无 uplift。GitHub Node 22/24 §48 另暴露 source default-off 30s lifecycle hang。Round 5 仅限移除 timer/keepalive preload、将锁定的 DSH runtime closure 设为 alpha.3、保留源码普通运行的 `ts/dsh-runtime/gotry-state/` 状态连续性、让 benchmark/package 用调用目录隔离,并增加 benchmark-only 结构化诊断 pipe(allowlisted redacted reason codes),stdout 继续 fail-closed;其 frozen treatment(代码 SHA `752e54c(重写后 7d6f8a9)`)在 140.715 秒后以 `child_nonzero_exit`、0 terminal bytes、evaluator/official scores null 停止,仅 diagnostic-only,后续纯 lock-consistency 提交不改写该 UID 归属。Phase 0 foundation 的 deterministic planning/admission 边界不变。 - Round 5 runtime resolution:source checkout 与 clean package 都解析同一组 216 个精确直接依赖的 DSH `0.1.2-alpha.3` closure;manifest、package-lock 与 root pnpm importer 的 DSH 名称集合必须同为 216,publish preverify 对漏钉、混版或 range 声明 fail-closed。source 普通运行的 dsh cwd 保持 `ts/dsh-runtime/`,状态继续落 `ts/dsh-runtime/gotry-state/`,benchmark opt-in 与 npm package 使用调用目录隔离;legacy vendored alpha.1 只作非 benchmark 解析兼容,不承诺可运行。benchmark 在 spawn 前拒绝实际 DSH 版本漂移;Node 下界统一为 22.15,并在 DSH import/spawn 前稳定拒绝旧版本。 -- Round 6 terminal diagnostics:benchmark conformance 只观察最终 `turn/end`,按 allowlisted code/有限 status 映射 coarse enum;所有自由文本与 raw stderr 均不进入控制面。per-session arbiter 只在最终终态单写,bridge/conformance 专项原因优先,恢复成功的 model retry 零失败输出。代码 SHA `c61600b` 的 ChinaTravel frozen treatment(`..._00001`,`deepseek-v4-flash`)在 49.546 秒后稳定输出 `child_runtime_error`,但仍为 0 terminal bytes、evaluator/official scores null;leakage 与本地凭证/端点扫描均为 0。该切片不改变重试、prompt、工具和评分逻辑,不产生 uplift。 +- Round 6 terminal diagnostics:benchmark conformance 只观察最终 `turn/end`,按 allowlisted code/有限 status 映射 coarse enum;所有自由文本与 raw stderr 均不进入控制面。per-session arbiter 只在最终终态单写,bridge/conformance 专项原因优先,恢复成功的 model retry 零失败输出。代码 SHA `c61600b(重写后 ea678f8)` 的 ChinaTravel frozen treatment(`..._00001`,`deepseek-v4-flash`)在 49.546 秒后稳定输出 `child_runtime_error`,但仍为 0 terminal bytes、evaluator/official scores null;leakage 与本地凭证/端点扫描均为 0。该切片不改变重试、prompt、工具和评分逻辑,不产生 uplift。 - Round 7 minimal kernel:代码 SHA `edb9392896625adbb48abae4a2ecf968dbfc0349` 的 benchmark opt-in 仅保留 turn deadline(产品路径默认不装;benchmark opt-in 装 wall-clock 闸)、model override、唯一 bridge、isolation/conformance;产品 prompt variables/process guards/consent/普通工具均不装,默认路径不变。system-prompt 投影为稳定 task-agnostic persona,root patch 只接受 canonical `insert` 与 `system-prompt` 各一,其他 root item/变体 fail-closed。ChinaTravel frozen treatment UID `e20241028160248698752`(`easy`,`deepseek-v4-flash`)preflight pass、未回退,80.463s 后 runner exit 1、terminal 0 bytes/invalid,evaluator 未进入、official null、不可计分;白名单归因为 `child_bridge_runner_failed`,不产生 uplift 或 external benchmark closure。下一轮问题聚焦 generic bridge tool schema 与可恢复 domain-error contract。 - ** 2026-08-27 起,①③ 两环的时间语义由 `ts/src/time-anchor.ts` 锚点卡供给(ADR-12),本文①中「2026 年历」的硬编码表述以锚点层为准。 - 2026-08-28 起,S5 工单持久化升级为账本 durable 形态(ADR-15:workflow_runs/steps 权威 + json/md 视图),本文工单文件表述以 `state-ledger.ts` 为准;`gotry_async_terminal.v1` 将 4/4 映射为 `succeeded`/ledger `settled`/exit 0,将非 4/4 映射为 `failed`/ledger `failed`/exit 2,终态复诵保持同一结果与退出码且零重算。2026-08-29 起,求解运行时收敛 `z3-shared.ts`(单一 WASM 实例+会话级互斥,run-all §30 并发回归闸)——