Skip to content

docs(adr): ADR-0118 非用户 actor 的平台契约 —— null 表示、fail-closed、显式 isSystem (#4608) - #4609

Merged
os-zhuang merged 2 commits into
mainfrom
claude/v17-protocol-changes-ubk7pk
Aug 2, 2026
Merged

docs(adr): ADR-0118 非用户 actor 的平台契约 —— null 表示、fail-closed、显式 isSystem (#4608)#4609
os-zhuang merged 2 commits into
mainfrom
claude/v17-protocol-changes-ubk7pk

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

Closes #4608

新增 docs/adr/0118-non-user-actor-contract.md(docs-only,无包变更、无 changeset)。

动因

平台里「没有人在场但平台在写」的时刻(boot、迁移、调度任务、流程、AI 工具服务端调用),至少四处现场各自发明了行为主体的表示法:#4556lookup('sys_user') 列存哨兵 'system';#2991 曾把缺 actor 文档化为 system 级缺省(fall-open);#4560current_user 令牌下沉为列 DEFAULT;#3166isSystem 是自愿声明。不统一,平台会长出三种「系统」方言,统一要动审计数据迁移,越晚越贵。

决策(正文 D1–D6)

  1. D1 表示法:用户 lookup 列中系统 actor = null;不造魔法账号(sys_user 归 better-auth 管,ADR-0092,伪用户行是安全面)、不存哨兵;UI 显示「系统」是渲染规则不是数据。
  2. D2 授权:缺席 ≠ 系统;缺 actor 一律 fail-closed(匿名、RLS 开、什么都看不见),isSystem: true 是唯一显式提权入口——把 ai-service.ts:394-404 已落的契约文本升为全平台规则。
  3. D3 传播:系统上下文只在穷举的入口点显式构造,跨异步边界显式重建,不隐式继承。
  4. D4 存储:框架令牌永不下沉存储层,列里只有 id 和 null。
  5. D5 归因:actor 二分;「哪个自动化」由 flow run id / job 名等关联字段回答,不设 actor_kind
  6. D6 非目标:不动 owner_id(ownership 轴,ADR-0117);不做多态 actor 引用。

执行项(不在本 PR)

#4556(D1 迁移)、#2991(D2 执行器验证)、#4560(D4 驱动修复)、#3166(D3 可检查化)——均已在 backlog,其中 #4556/#2991 属 v17 protocol:breaking 清单。

🤖 Generated with Claude Code

https://claude.ai/code/session_01PRJtkgUAaVG11FsJQbvZWA


Generated by Claude Code

#4608)

四处现场各自发明「系统在操作」的表示法(#4556 哨兵字符串、#2991 缺省即特权、
#4560 令牌下沉存储、#3166 自愿声明),本 ADR 统一为:用户 lookup 列中系统
actor = null(不造魔法账号、不存哨兵);缺 actor 一律 fail-closed,isSystem
是唯一显式提权入口;系统上下文只在入口点构造、跨异步边界显式重建;框架令牌
永不下沉存储层;归因靠关联字段,不设 actor_kind。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PRJtkgUAaVG11FsJQbvZWA
@vercel

vercel Bot commented Aug 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectstack Ignored Ignored Aug 2, 2026 10:25am

Request Review

@github-actions github-actions Bot added size/m documentation Improvements or additions to documentation labels Aug 2, 2026
@os-zhuang
os-zhuang marked this pull request as ready for review August 2, 2026 10:36
@os-zhuang
os-zhuang added this pull request to the merge queue Aug 2, 2026
Merged via the queue into main with commit ddf7bdc Aug 2, 2026
18 checks passed
@os-zhuang
os-zhuang deleted the claude/v17-protocol-changes-ubk7pk branch August 2, 2026 10:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/m tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ADR-0118:平台级「非用户 actor」契约 —— null 表示 / fail-closed / 显式 isSystem(#4556 #2991 #4560 #3166 的对齐规范)

2 participants