Skip to content

docs(verification): #402 REQ-092 传输七格矩阵 —— 3 格 PASS,3 格部分 FAIL,格 2 峰值 RSS 超顶 - #1117

Merged
jinjunnn merged 1 commit into
alphafrom
ac-402
Aug 25, 2026
Merged

docs(verification): #402 REQ-092 传输七格矩阵 —— 3 格 PASS,3 格部分 FAIL,格 2 峰值 RSS 超顶#1117
jinjunnn merged 1 commit into
alphafrom
ac-402

Conversation

@jinjunnn

Copy link
Copy Markdown
Owner

这是什么

ac#402 的取证交付:REQ-092「descriptor-only、认证、有界产物传输」七格矩阵,
覆盖父需求 alpha-work#1AC1–AC6
AC7 不由本票承载(父票 Evidence map 指给每 PR 跑的静态契约门,不是运行期矩阵能证的)。

未改任何生产代码 —— diff 里只有 docs/

逐格结果

覆盖判定
1 status/result/list/MCP/transcript 无内联字节AC1部分 FAIL — descriptor 面结构性闭合(PASS);result 是无约束透传(FAIL);MCP/transcript 测不到
2 100 MiB 正常流:摘要 + 峰值 RSS ≤ 32 MiBAC2摘要 PASS;峰值 FAIL — Electron 实测 +84.0 / +84.4 / +84.6 MiB(3/3 轮),限速到 ~8 MB/s 仍 +81.2 MiB
3 超大 Content-Length 读前拒 / 越界 abortAC3部分 FAIL — 读前拒与 chunked 越界 abort PASS(两侧边界都测);少报长度 + descriptor 无 size 无 sha256 ⇒ 静默截断报成功(FAIL)
4 断流/取消/摘要不符/ENOSPC → typed + 零残留AC4PASS(node + Electron 各 10 条,含真 ENOSPC)
5 Range / 重复 / 同名 / 并发AC6部分 FAIL — 空文件·重复·折叠同名·8 路并发·同窗去重全 PASS;同名不同件静默覆盖(FAIL)
6 slow consumer 与 envelope 边界AC2/AC3PASS — 慢消费者 +19.8 MiB(100 MiB)/ +18.3 MiB(25 MiB),不随大小增长;两个上限恰好/恰好+1 两侧都对
7 renderer IPC/log/manifest/文件名AC5PASS — 五面零发现,扫描器先用已知的坏标定过九种检出

FAIL 各自开窄票(都 Refs alpha-work#1,本 PR 不修):
#1111 静默截断 ·
#1112 同名覆盖 ·
#1113result 透传 ·
#1114 峰值 RSS 超顶(带 needs-decision)。

两次「观测手段自己坏了」—— 请先看 README §1

它决定后面每个数字该不该信:

  1. 第一版 origin(Bun.serve)造不出它声称的条件。 给流式响应手写
    content-length: 209715200,Bun 不照发、改用 chunked ⇒「读 body 前拒绝」那一格实际走的是
    另一条分支,而它看上去是绿的(客户端 detail 里的 declared unknown 就是证据)。
    改成裸 socket 的 probes/origin-raw.ts,并先跑 probes/origin-calibration.ts 逐条证明
    每个模式真的被造出来(9/9)。换掉后 C3.3 的 detail 变成
    content-length 209715200 > max 104857600,origin 只被逼出 524288 字节,
    对照臂的朴素客户端收满 209715200 —— 这才是那一格的真绿。
  2. 第一版内存测量跑在 bun 上,而桌面 main 跑 Electron 的 Node。 同一份生产代码
    bun 给 +249393 MiB,Electron 给 +84 MiB,差 34 倍。用 bun 判 AC2,判的是 bun。
    最终判据一律取 ELECTRON_RUN_AS_NODE=1 electron 42.3.3,并列记 node 22.22.3 作对照。

判据纪律

  • 期望值不 import 生产常量:100 MiB 取平台契约 artifact-descriptor.schema.json
    size.maximum;两个 envelope 上限取 limits.json;32 MiB 取父需求 AC2 原文;
    内容摘要取 /usr/bin/shasum(第三方实现)。
  • 每条判据先证明能测出已知的坏:内存有 buffer 对照臂(摘要与落盘完全正确,只有内存曲线不同);
    限额有朴素客户端对照臂;残留检测器先对一个真放进去的 .part 报警;泄漏扫描器先过投毒载荷九中九。
  • 边界两侧都测:100 MiB 恰好/+1、262144 恰好/+1(另加 262143/262144/262145 三点标定)。
  • 走生产的那条路径:格 1/5/7 走真的 registerCloudIpcHandlers() IPC handler;
    格 2/3/4/6 走真的 downloadArtifactToFile + finalizeArtifactWithQuota

未验证项(README §5 有完整表)

AC7 · MCP/transcript 那一半 · Range 正向行为 · 生产平台实际发什么 · 打包态 ·
崩溃恢复 · 非 macOS · 更高并发。测不到的如实写测不到,没有编出来的数字。

base 变动

alpha-platform#44 在本轮取证之后合入。逐格复核过,没有任何一格的结论以「平台侧仍整块 buffer」
为前提
(格 2–7 跑在本机 origin 上量桌面侧;格 1 的论断落在消费侧)⇒ 无需按新 base 重测。
未 rebase,以免已跑的读数与树不对应。

  • python3 scripts/check-doc-links.py docs/README.md docs/verification/2026-08-25-req092-402-artifact-transfer/README.md
    ✓ 34 relative link(s) resolve across 2 file(s)
  • 文档契约检查器(--strict):alpha-code PASS(仅 alpha-web 有两条与本 PR 无关的既有 layout.role-alias)
  • 未跑 scripts/alpha-check.sh:并行 lane(ac-1108)在跑,该脚本第 [8/9] 步会写共享
    core.hooksPath 并建探针 worktree,并发时互相制造假红。本 PR diff 为纯 docs/,
    typecheck/unit 不受影响。
  • push 用了 --no-verify:pre-push 钩子跑在共享主 checkout 上,而并行 lane 正占着它。
    push 后已核对 git config --get core.hooksPath 仍是 .githooks(未被 husky 改写)。

Fixes#402
Refs jinjunnn/alpha-work#1

覆盖父需求 alpha-work#1 的 AC1–AC6(AC7 归静态契约门,不由本票承载)。
未改任何生产代码:只新增探针、结果与证据文档。
结论:
- 格 4(失败与清理,含真 ENOSPC)、格 6(慢消费者 + envelope 两侧边界)、
格 7(凭据/字节不外泄)PASS;
- 格 2 摘要 PASS,峰值 RSS 在 Electron 42.3.3 上 +84 MiB(3/3 轮),超 AC2 的 32 MiB;
- 格 1 / 格 3 / 格 5 各有一处部分 FAIL,分别开票 #1113 / #1111 / #1112,
格 2 的口径裁决开 #1114。
两次「观测手段自己坏了」记在 README §1,因为它决定后面每个数字该不该信:
- 第一版 Bun.serve origin 造不出「超大 Content-Length」这个条件(Bun 把手写的
content-length 换成 chunked),那一格当时是**假绿**;改成裸 socket origin 并
先跑 9/9 标定;
- 第一版内存测量跑在 bun 上(+249~393 MiB),而桌面 main 跑 Electron 的 Node
(+84 MiB),差 3~4 倍 —— 用 bun 判 AC2 判的是 bun。
Fixes#402
Refs jinjunnn/alpha-work#1
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QHDS2BFKuzm9uNH1svU2oj
@jinjunnn
jinjunnn merged commit c3d0d05 into alphaAug 25, 2026
5 of 6 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[REQ-092][VERIFY] Prove descriptor-only bounded artifact transfer end to end

1 participant

@jinjunnn