Skip to content

[DECIDE][P1] graphDigest 命名撞车:授权 binding 与账本指两个不同的量 #758

Closed

Description

@jinjunnn

大白话

同一个名字 graphDigest 在两个地方指两个不同的东西,而且都在 REQ-128 的同一条链上。
下一个接手的人几乎一定会搞混。

两个 graphDigest

出处 覆盖什么 何时算
alpha-code#749(授权 binding,shared/package-admission.ts) 信封声明的有效安装图(root + 未 skip 的 leaf + required 标志) 安装前,preview/重验绑定用
alpha-code#706(账本,ext-package-ledger-v3.ts) 已安装的图,含逐节点 manifestDigest 安装后,落账用

两者值不同、时机不同、用途不同,但同名。

为什么值得单独裁决而不是顺手改

  • 账本这个名字是已批方案基线 §2.9 点名的,#706 因此没有自行改名(判断正确)。
  • 授权 binding 那个是 rev3 修订按基线要求补的,也有出处。
  • 所以这是两个都有出处的命名撞车,属于合同层的命名裁决,不是实现方能自己定的。

影响面

alpha-code#697(mixed Bundle 激活)与 #698(Bundle 生命周期)会同时消费这两个量 ——
一个用于授权绑定、一个用于 claim mutation。同名会让"这两个 digest 应该相等吗"这种问题
在 review 里反复出现,而正确答案是「不,它们本来就不该相等」。

需要裁决的

给其中一个改名(建议改账本侧为 installedGraphDigest 或改授权侧为 plannedGraphDigest),
并同步基线 §2.9 的措辞。在 #697 开工前定下来,否则那张票会带着混淆写代码。

出处

alpha-code#706(PR #757)实现方主动报告,未顺手改。

Activity

  1. jinjunnn commented on Aug 1, 2026

    @jinjunnn
    OwnerAuthor

    ⚠️ 编排者更正 + 裁决(2026-08-01)

    我建这张票时写错了一条事实。 原文说「账本这个名字是已批方案基线 §2.9 点名的,
    #706 因此没有自行改名(判断正确)」—— 不对。

    实读已批基线 alpha-code@f923f286 docs/design/2026-07-30-req128-extension-package-baseline.md:
    graphDigest 全文只出现一次,在第 441 行,语境是授权绑定:

    → capability authorization
       绑定 signedSnapshotDigest + packageEnvelopeDigest + graphDigest
       + itemManifestDigests + exact capability set
    

    ⇒ 基线认可的 graphDigest 是授权绑定那个(#749 补的,对信封声明的有效安装图)。
    账本那个(#706 的,对已安装图、含逐节点 manifestDigest)是复用了基线术语去指另一个量。

    裁决

    改账本侧的名字,保留授权绑定侧的 graphDigest。

    建议改成 installedGraphDigest —— 它与授权侧的区别正是「已安装 vs 计划安装」,
    名字自己说清楚,不必靠注释。

    同时更新:docs/contracts/extension-package-lifecycle.md、ext-package-ledger-v3.ts 的相关注释,
    以及任何把两者当同一个量的措辞。

    ⚠️ 执行顺序

    本票必须排在 alpha-code#764 之后 —— 两者都动 ext-receipt-v2.ts 与 V3 账本的记录形状,
    并发会撞车。#764 合并后再开工。

    退出门

    • 全仓两条独立检索轴(rg -a)确认:graphDigest 的每一处命中,
      要么是授权绑定语境、要么已改名,没有第三种。
    • 一条断言:两个量在同一次安装里取值不同(它们本来就该不同 —— 这条断言的存在
      正是为了让「它们应该相等吗」这个问题以后不再被反复提出)。
    • 判据 = 把改名回退,那条断言或类型检查会红。
  2. added a commit that references this issue on Aug 1, 2026
  3. added a commit that references this issue on Aug 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    prio:P1High-value near-term delivery

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions