Skip to content

P1-CONTROL-SPIKE: 控制能力路由契约矩阵 + P1-RECOVERY 幂等重放回归 - #134

Merged
DTALEX66 merged 3 commits into
mainfrom
feat/p1-control-spike
Sep 21, 2026
Merged

DTALEX66 merged 3 commits into
mainfrom
feat/p1-control-spike

Conversation

@DTALEX66

Copy link
Copy Markdown
Owner

P1-CONTROL-SPIKE:控制能力路由契约矩阵 + P1-RECOVERY 幂等重放回归

任务书DL-E2-P1-CONTROL-SPIKE + DL-E2-P1-RECOVERY(不阻塞 E2,纯契约/测试,无真实宿主操作)

基线9f89452(origin/main),VERIFY-THEN-PATCH 策略。

VERIFY-THEN-PATCH 对账结果(任务书 P0 → 当前 main)

P0 项 对账结论
P0-STATE ✅ 已实现(18/18 HTTP 契约测试覆盖 null/多选择/bind/fail-closed/幂等)
P0-REFERENCE ✅ 已实现(真 PNG 导入 + project-ownership + fail-closed 回归)
P0-WHEEL ✅ 已实现(隔离 venv + python -I 切断 repo CWD + C02/C03/C04 PASS)
P0-BROWSER ✅ 已实现(no-skip + 钉版 Playwright + 专属 job;CI 实际通过)
P0-EVIDENCE ✅ 已实现(requiresRequalification 拒绝 + release-gate effective 比较)
P0-GOVSYNC ✅ 已实现(AUTHORITY §15 CLOSED_WITH_REGRESSION_GUARD)

P0 全项在 main 已实现 → 不重造,只做回归守卫。 本 PR 只补缺口(P1-CONTROL-SPIKE + P1-RECOVERY)。

本 PR 新增范围

P1-CONTROL-SPIKE(服务/操控能力搭建,真实操控留给外部模型/软件)

  • design-lab/config/control-capability-matrix.json:4 host × 8 capability 路由声明。
    分层原则(任务书原文):Computer-Use 负责 reachability;Host-native readback /
    artifact rehash 负责 truth;DESIGN-LAB 自己的 State/Evidence 层负责 provenance。

    诚实值:photoshop/illustrator/minimax-design 全 supported=false/E0;browser 仅
    launch/create/reopen-verify/readback 为 E2(qualified_sha=9f89452)。
  • design-lab/schemas/control-capability-matrix.schema.json:draft 2020-12。
  • design-lab/scripts/verify_control_capability_matrix.py:纯 stdlib 验证器,
    fail-closed 规则:
    1. supported=true 必须 evidence_level>=E2 且必填 qualified_sha
      (能力声明不得超出证据等级,live claim 可定位)
    2. no_bypass_license 必须 true(任务书红线:不绕过 Adobe/MiniMax 授权)
    3. reachability=computer-use 必须配 truth 层(GUI 管 reachability,
      native/artifact 管 truth;"能点 Photoshop ≠ 解决集成")
    4. 矩阵必须覆盖 browser + minimax-design 两个已声明的 adapter 路由
  • design-lab/tests/test_control_capability_matrix.py:12 用例(PASS + 参数化 FAIL
    负控,负控矩阵写 .project-local/task-artifacts/control-spike/,gitignored)
  • design-lab/scripts/verify_design_lab.py:50→51,接入
    verify_control_capability_matrix.py 并加注释记录 P1-CONTROL-SPIKE 聚合语义。

P1-RECOVERY(commit-then-disconnect 幂等重放)

  • design-lab/tests/test_design_layer_idempotency_recovery.py:5 个新场景
    (委托 P0 harness 的 setUp + 按名绑定 helper,不重复继承 P0 18 个用例):
    1. choose 重放同 intent → 同一身份、不追加事件行
    2. 切换 A→B 重放 → SUM(chosen)=1 不变量保持
    3. 同 key 不同 actor → 409 IDEMPOTENCY_CONFLICT(fail-closed)
    4. bind 重放 → 同一 binding 身份、binding-created 事件仅 1 行
    5. service restart 后读回 → 与重启前 chosen_direction 一致

门禁实跑(基线 9f89452

CONTROL_CAPABILITY_MATRIX=PASS hosts=4 capabilities=32 findings=[]
unittest test_control_capability_matrix.py: 12/12 OK
unittest test_design_layer_idempotency_recovery.py: 23/23 OK
verify_design_lab.py: VERIFY_DESIGN_LAB=OK total=51 failed=0
verify_authority_gates.py --zero-spill: AUTHORITY_GATES=PASS gates=7
generate_current_reports.py: CURRENT_REPORTS=PASS

未证明项(诚实边界,不宣称完成)

  • 真实 Adobe Host E3 实操(需 owner 授权的真实宿主运行 + 人工 E4)
  • MiniMax Design 真实运行(本批仅结构声明 E0,无 live 证据)
  • 真实 tag 发布路径 E5(需 tag + token + 网络)

这些不在 Hermes 内执行,交给外部模型/软件。

不做什么

  • 不修改任何既有 adapter 的 evidence level
  • 不把 photoshop/minimax 的 supportedtrue(无真实宿主证据)
  • 不引入网络/非 stdlib 依赖
  • 不建第二 store / 第二 backend / design_layer_v2
  • 不把 MiniMax 设为系统真值(GUI 管 reachability,native 管 truth)

任务书 VERIFY-THEN-PATCH 对账后,P0 全项在 main 已实现(STATE/REFERENCE/
WHEEL/BROWSER/EVIDENCE/GOVSYS + P1-REVISION),本批只补缺口:

P1-CONTROL-SPIKE(服务/操控能力搭建,真实操控留给外部模型/软件):
- design-lab/config/control-capability-matrix.json:4 host × 8 capability
  路由声明。分层原则(任务书原文):Computer-Use 负责 reachability;
  Host-native readback / artifact rehash 负责 truth;DESIGN-LAB 自己的
  State/Evidence 层负责 provenance。
- design-lab/schemas/control-capability-matrix.schema.json:draft 2020-12。
- design-lab/scripts/verify_control_capability_matrix.py:纯 stdlib 验证器,
  fail-closed 规则:
  * supported=true 必须 evidence_level>=E2 且必填 qualified_sha
    (能力声明不得超出证据等级,live claim 可定位)
  * no_bypass_license 必须 true(任务书红线:不绕过 Adobe/MiniMax 授权)
  * reachability=computer-use 必须配 truth 层(GUI 管 reachability,
    native/artifact 管 truth;"能点 Photoshop ≠ 解决集成")
  * 矩阵必须覆盖 browser + minimax-design 两个已声明的 adapter 路由
  * 诚实值:photoshop/illustrator/minimax-design 全 supported=false/E0;
    browser 仅 launch/create/reopen-verify/readback 为 E2(qualified_sha=9f89452)
- design-lab/tests/test_control_capability_matrix.py:12 用例(PASS +
  参数化 FAIL 负控,负控矩阵写 .project-local/task-artifacts/control-spike/)
- verify_design_lab.py:50→51,接入 verify_control_capability_matrix.py
  并加注释记录 P1-CONTROL-SPIKE 聚合语义。

P1-RECOVERY(commit-then-disconnect 幂等重放):
- design-lab/tests/test_design_layer_idempotency_recovery.py:5 个新场景
  (委托 P0 harness 的 setUp + 按名绑定 helper,不重复继承 P0 18 个用例):
  1. choose 重放同 intent → 同一身份、不追加事件行
  2. 切换 A→B 重放 → SUM(chosen)=1 不变量保持
  3. 同 key 不同 actor → 409 IDEMPOTENCY_CONFLICT(fail-closed)
  4. bind 重放 → 同一 binding 身份、binding-created 事件仅 1 行
  5. service restart 后读回 → 与重启前 chosen_direction 一致

本批不修改任何既有 adapter 的 evidence level,不把 photoshop/minimax 的
supported 置 true(无真实宿主证据),不引入网络/非 stdlib 依赖。
真实操控(Adobe Host E3 实操 / Human Jury E4 / tag 发布 E5)明确排除,
不在 Hermes 内执行,交给外部模型/软件。

门禁实跑(基线 9f89452):
- CONTROL_CAPABILITY_MATRIX=PASS hosts=4 capabilities=32 findings=[]
- unittest test_control_capability_matrix.py: 12/12 OK
- unittest test_design_layer_idempotency_recovery.py: 23/23 OK
- verify_design_lab.py: VERIFY_DESIGN_LAB=OK total=51 failed=0
- verify_authority_gates.py --zero-spill: AUTHORITY_GATES=PASS gates=7
- generate_current_reports.py: CURRENT_REPORTS=PASS

Unproven (诚实边界,不宣称完成):
- 真实 Adobe Host E3 实操(需 owner 授权的真实宿主运行 + 人工 E4)
- MiniMax Design 真实运行(本批仅结构声明 E0,无 live 证据)
- 真实 tag 发布路径 E5(需 tag + token + 网络)
generate_current_reports.py --zero-spill regenerate; subject_sha 指向代码
commit 82556dc。reports/current/** 为 LAST_GENERATED_PROJECTION,fresh=false。
@DTALEX66
DTALEX66 merged commit 6a16c40 into main Sep 21, 2026
18 checks passed
Sign up for free to 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.

1 participant