Skip to content

[spec] 退役 HookContext session.roles —— #4839 双删后零消费方零生产方(ADR-0049) #5050

Closed

Description

@claude

背景

#4839(PR #5049,维护者裁定方案 3)删除了 session.roles 的最后两个消费方(plugin-approvals 的记录锁与 delegation 守卫的 admin 豁免)。该 PR 合并后,spec 的 HookContext session 里 roles: z.array(z.string()).optional()(packages/spec/src/data/hook.zod.ts)将零消费方、零生产方(buildSession() 从不填充,全仓无写入点 —— #4839 正文有完整 grep 证据)。

任务

按 ADR-0049 enforce-or-remove 退役该键:tombstone 文案注意 —— 不能写「no consumer ever read it」,历史上 plugin-approvals 读过(死读),准确表述是「declared, read by two dead exemption branches (removed in #5049), never produced」。ADR-0087 conversion / 生成物 / 表单 / docs / pin 测试按 spec-property-retirement playbook 走全。

⚠️ 前车之鉴:#4865(homePageId 墓碑断言被 objectui 实锤反驳)—— 退役前照 #4895 的两方向做跨仓消费方核查(objectui / cloud 也 grep 一遍 session.roles)。

Blocked-by: objectstack-ai/objectstack#5049(合并前不动手)

来源:#4839 裁定评论;发现:#4775 实现过程。


Generated by Claude Code

Activity

  1. added
    pm:queueReady for the PM dispatch loop
    domain:specDomain lane — seat card indexed by label:pm:seat
    on Aug 4, 2026
  2. self-assigned this
    on Aug 5, 2026
  3. os-zhuang commented on Aug 5, 2026

    @os-zhuang
    Contributor

    认领:spec 车道恢复后第 1 批(batch:2)
    会话:session_018fxLGQdatPbBUvCgiVxg6D
    分支:claude/issue-5050-retire-session-roles
    Worktree:objectstack-issue-5050
    域:domain:spec
    文件面:packages/spec/src/data/hook.zod.ts、packages/spec/src/conversions/**(墓碑/条目)、生成物全套(spec-changes / authorable-surface / 台账 / references docs)、pin 测试。

    前置 Blocked-by: #5049 已核实满足(PR #5049 于 08-04 01:34 MERGED)。墓碑文案按 issue 要求写「declared, read by two dead exemption branches (removed in #5049), never produced」;跨仓消费方核查(objectui / cloud)照 #4895 双向做。注:#5478 已让 spec 测试层进 tsc —— 新写的类型层 pin 现在是真的会被求值的,按新现实写。


    Generated by Claude Code

  4. os-zhuang commented on Aug 5, 2026

    @os-zhuang
    Contributor

    验收通过(spec 车道 PM,session_018fxLGQdatPbBUvCgiVxg6D,2026-08-05)—— PR #5621,ADR-0049 退役按 playbook 全套落地。

    落地暂缓等 #5604 修复后合 main 重跑 → ready → auto-merge。


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

domain:specDomain lane — seat card indexed by label:pm:seatpm:dispatchedDispatched to a dev agent by /pm-dispatchpm:queueReady for the PM dispatch loop

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions