Skip to content

[REQ-105][VERIFY] packaged 离线态经真实产品入口创建并复读 xlsx —— AC4 至今没有证据承载体 #1108

Closed

Description

@jinjunnn

Parent

  • jinjunnn/alpha-work#7 (REQ-105)

为什么现在才建

aw#7 的 Evidence map 把 AC4 的证据面标为「待创建 [REQ-105][VERIFY] packaged offline real create/read xlsx run」。两条检索轴(REQ-105 全部 8 张票逐号枚举 + 标题检索)查过:这张票从来没有被创建。 ⇒ REQ-105 的 AC4 至今零证据承载体,而它正是这个需求「到底能不能用」的核心断言。

出处:owner 裁决 2026-08-25(决策 B,选 B1)。

负责哪条 AC

aw#7 AC4:

Excel 经真实产品入口以 local stdio 在 workspace 创建一个 xlsx,并由独立读取路径重新打开验证关键单元格/结构;过程不需要外网。

矩阵(只覆盖 AC4,三格)

格 断言
C1 创建 packaged 构建里,经真实产品入口(不是单测桩,也不是直接调 MCP 二进制)让 Excel MCP 在 workspace 内创建一个 xlsx
C2 复读 由独立读取路径重新打开该文件,断言关键单元格值与结构(至少:一个具名 sheet、一个写入的单元格值、一处结构特征)
C3 离线 全程 --network none 或等价隔离;若产品路径在离线下降级,如实记录降级形态,不当成通过

⚠️ 断言粒度:C2 不得只断「文件存在」或「打开没报错」—— 那两条被一个写空文件的错误实现满足。要断具体单元格值,且期望值是独立字面量,不从被测路径自己读回来(比较基准与被测对象同源 = 自指等价链)。

边界

packaged 构建上的一次真实 create/read 往返,证据落 docs/verification/。

Out of scope

  • catalog / seed / bundle 的 digest 一致性(ac#319 负责 AC2/AC5);
  • 自定义安装表单的 workspace 根输入(ac#337);
  • sandbox / transport 反例夹具与 workspace 边界/traversal(那是 aw#7 AC3,证据已由 ac#254 承载并已关闭 —— 本票不重复它)。

退出条件

三格执行完 + 证据落 docs/verification/ + 在 aw#7 评论里对 AC4 打勾。FAIL 转 bug 票挂 aw#7,不在本票里修。

验证层级

L3(packaged smoke 面)。

Activity

  1. added
    prio:P0Critical safety, data, or broad production impact
    area:securitySecurity or access control
    area:integrationRepository, API, or external integration
    cross-repoRequires coordinated work in multiple repositories
    type:verificationIndependent verification: runtime/E2E/security/performance matrix
    on Aug 25, 2026
  2. self-assigned this
    on Aug 25, 2026
  3. jinjunnn commented on Aug 25, 2026

    @jinjunnn
    OwnerAuthor

    三格执行完,证据 PR:#1118 ·
    证据目录 docs/verification/2026-08-25-req105-1108-packaged-offline-xlsx/

    格 结论
    C1 创建 PASS(离线 4/4 轮 + 在线对照 1/1 轮)
    C2 复读 PASS(16 条断言全绿;判据先经 11 个已知样本自检,1 绿 / 10 红)
    C3 离线 PASS,带一条限定(见下)

    两条建议(只是建议,未改本票矩阵,也未加任何准入条件)

    建议 1 —— 单开一张窄票:勘破 Alpha Office 四连接器的依赖获取路径。
    C3 这一轮确实零下载(该轮隔离 uv 缓存结束时只剩 20 KB、零 wheel),但我没能在应用之外复现这份成功:
    把同一条生产命令(uv run --no-project --with openpyxl==3.1.5 <packaged server.py> excel <ws>)
    按 sidecar 环境白名单忠实重建后,六组变体全部卡在 https://pypi.org/simple/openpyxl/
    (严格 deny-net / 热缓存 / 冷缓存 / 指定 Homebrew python / PATH venv 优先 / 只留白名单变量),
    只有带 VIRTUAL_ENV(本机一个已装 openpyxl 3.1.5 的无关 venv)那组通过;
    而 sidecar-env.ts 是 default-deny 且不放行 VIRTUAL_ENV。
    ⇒ 不能据此断言"一台没有 uv/pip 历史的干净机器,离线也能完成首次 Excel 创建"。
    值得独立勘破:首次运行是否必须联网?要不要把钉版 wheel 随包/随 seed 落成离线 store?

    建议 2 —— alphacodeone.com 在本机恒不可达,阻断了签名 catalog 安装入口的在线复核。
    curl https://alphacodeone.com/catalog/v1/channels/trust.json 连测 8 次全部 SSL_ERROR_SYSCALL / http=000
    (DNS 给出 Clash fake-IP 198.18.0.131)。离线态 ext-install-catalog 按设计 fail-closed 返回
    entry not in verified catalog: mcp:alpha-excel(正确行为),但在线态也跑不通,
    所以"从签名 catalog 装 → mcpActivation.status === "connected""这条产品行为本轮测不到,
    原因是环境不是产品。本轮改走同一个 main 侧咽喉的另一条产品入口(ext-persist-mcp →
    persistMcpWithPolicy → applyMcpWritePolicy),{alphaResources} 解析与 {workspace} 契约是同一份代码。

    关于父票 AC4 打勾

    没有自行打勾。 C1/C2 我认为是真绿;C3 有上面那条限定,"过程不需要外网"在干净机器上尚未成立。
    是否据此勾 AC4,是 acceptance owner(@jinjunnn)的裁决,不是我的。
    README 的《未验证项》一节把七条没测到的东西逐条写清了(含离线臂给 Electron 加了
    --no-sandbox --disable-gpu、模型是本机 loopback 桩、/global/dispose 在本 harness 下会让
    renderer 重挂因而改用 providers.add 驱动 respawn)。

  4. added a commit that references this issue on Aug 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:integrationRepository, API, or external integrationarea:securitySecurity or access controlcross-repoRequires coordinated work in multiple repositoriesprio:P0Critical safety, data, or broad production impacttype:verificationIndependent verification: runtime/E2E/security/performance matrix

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions