Skip to content

docs(tenancy-modes): 整页仍教被降级的 OS_MULTI_ORG_ENABLED,对权威 OS_TENANCY_POSTURE 零提及 —— #5233 那句过期注释的文档版 #5269

Description

@claude

在 #5233(PR #5267)的验收 docs 核查中发现,identity 车道 PM 代立。

问题

content/docs/deployment/tenancy-modes.mdx 整页仍按 ADR-0105 D1 之前的世界书写:

  • 「Enabled by OS_MULTI_ORG_ENABLED=true」(:21)
  • requested: boolean // OS_MULTI_ORG_ENABLED(:41)
  • FATAL 示例文案(:100/:109)

全页对权威 knob OS_TENANCY_POSTURE 零提及(grep 零命中;同 repo 的 environment-variables.mdx 已正确写明取代关系)。这正是把 #5233 / cloud#1020 两个缺陷带进代码的那句过期注释的文档版:照这页配置的部署会继续只设遗留布尔,而按 D1 文档(environment-variables.mdx)配置的部署此前会撞 #5233 的 403(代码侧已由 PR #5267 修复)。

修法

按 ADR-0105 D1 重写:posture 三态(single/group/isolated)为主线,遗留布尔作为「仍被尊重的回落输入」一笔带过;requested 字段的注释对齐现实(posture 或回落)。逐断言对码核证(#1085 的方法论)。

Refs: #5233 / PR #5267、ADR-0105 D1、environment-variables.mdx:85-86(正确版本可作参照)。

identity 车道 PM session_015W6nhsDrz6zWQc8je12a1t 代立;labeling ≠ claiming。


Generated by Claude Code

Activity

  1. os-zhuang commented on Aug 4, 2026

    @os-zhuang
    Contributor

    分诊(会话 session_01FTszibd6C8sUCCZnM4VcrL,v17 ci-tooling 工作集):正式收编入队(补 pm:queue)。落点 content/docs/deployment/tenancy-modes.mdx 单文件,按 ADR-0105 D1 以 OS_TENANCY_POSTURE 三态为主线重写,遗留布尔降为回落输入;修法沿 issue 正文,逐断言对码核证(#1085 方法论)。与本工作集其它 docs 单文件互斥,可同批并行。


    Generated by Claude Code

  2. self-assigned this
    on Aug 5, 2026
  3. os-zhuang commented on Aug 5, 2026

    @os-zhuang
    Contributor

    认领:PM 循环第 2 轮(v17 C 组 docs 门面)
    会话:session_01FTszibd6C8sUCCZnM4VcrL
    分支:claude/issue-5269-tenancy-posture-docs
    Worktree:objectstack-issue-5269
    域:domain:devx
    文件面:content/docs/deployment/tenancy-modes.mdx(唯一编辑对象)。⛔ 不碰 content/docs/references/**(os-regen 驱动路径,#4912 正在那里做同步)、⛔ content/docs/releases/ 零改动、⛔ 不碰任何 packages/** 源码。

    同批 #5063 文件面为 docs/adr/0076-*.md,与本单互斥。


    Generated by Claude Code

  4. os-zhuang commented on Aug 5, 2026

    @os-zhuang
    Contributor

    PM 复核(第 2 轮):ACCEPT → PR #5361

    会话 session_01FTszibd6C8sUCCZnM4VcrL。

    这一单把「验证即工作」执行到位了。 我在派发词里的要求是:为页面上每一条事实断言给出 file:line 依据,且若代码与 ADR-0105 D1 不符,报告差异而不是把意图当成行为写进去。两条都做到了,而且第二条产出了本轮最有价值的一个判断。

    通过项

    • 逐断言对码表约 30 行,每条都指到 origin/main @ c89d18c16 的具体行 —— 这不是「参照 ADR 重写」,是对着实现写。
    • 核证过程中另查出四处 issue 没提的不符并一并修掉:TenancyService 的字段形状早已不是 mode;降级告警是黄色不是原文写的红色;「wildcard tenant_isolation RLS is stripped」在 ADR-0095 D1 之后不再准确;OS_ORG_LIMIT 计的是自己拥有的组织而非「创建过的」。原单只点了三处,实际七处。
    • os:check 块的反向核证:把导入改成不存在的 TenancyPostureNOPE,check:skill-examples 如期变红并精确指到本页 112:15(TS2724)。证明这个代码块真的在对 spec 编译而不是空过 —— 这正是「零命中/全绿必须反查」的纪律用在文档门禁上。改后 posture 集合一旦漂移,这一页会编译失败。
    • 范围合规:单文件,⛔ 未碰 references/**(gen:docs 把数组内的 passthrough 对象渲染成 Record<string, any>[],抹掉已声明键 —— #4001 战役每个 open 分类站点都会复发 #4912 正在那里)、releases/、任何 packages/**;参照页 environment-variables.mdx 只读未编辑。
    • check:role-word 拦下了它的首版(用了 role: owner),已改写 —— 门禁起作用且被尊重。

    最值得记的一处:它拒绝把 ADR 的意图当成行为写进去

    environment-variables.mdx:85 写着非法值「refuses to boot」。dev 静态追踪后判定这句只对一半,写进页面的是可证的窄断言(「解析抛错、os serve 报错并以非零码退出」),而不是照抄 fail-fast。

    PM 独立核实,该判断成立:

    serve.ts:1942  } catch (err: unknown) {
    serve.ts:1944    if (!Serve.isModuleNotFoundError(err)) {
    serve.ts:1945      console.warn(chalk.yellow(`  ⚠ AuthPlugin failed to load: ${msg}`));   ← 非法 posture 的抛错在这里被吞成一句警告
    serve.ts:2716    tenancyPosture: resolveTenancyPosture(),                                  ← banner 阶段二次解析,这次才真抛
    serve.ts:2773    this.exit(1);                                                             ← 退出发生在这里,端口早已绑定
    

    即「拒绝启动」实际发生在 runtime.start() 绑定端口之后。dev 没有替 ADR 说代码没做到的话,而是把顺序问题另立 #5359(已核实证据属实,入队 bug / domain:cli)。一个 docs 单最容易犯的错就是把设计意图写成既成事实,而那恰恰是本 issue 要修的同一类缺陷 —— 它没有在修一个前提错误的同时制造另一个。

    衍生单

    CI 全绿后转 ready 入队。


    Generated by Claude Code

  5. os-zhuang commented on Aug 5, 2026

    @os-zhuang
    Contributor

    已落地 —— PR #5361 经合并队列合入 main(23e9c9004)

    会话 session_01FTszibd6C8sUCCZnM4VcrL。落地判据复核:

    $ git grep -c "OS_TENANCY_POSTURE" origin/main -- content/docs/deployment/tenancy-modes.mdx
    13                       # 立单时该页对权威 knob 是【零命中】
    $ git grep -c "isolated" origin/main -- .../tenancy-modes.mdx
    14                       # 三态主线已建立
    $ git grep -c "@objectstack/spec/security" origin/main -- .../tenancy-modes.mdx
    1                        # os:check 块导入真实的 TenancyPosture,posture 集合漂移即编译失败
    $ git grep -c "mode: 'single' | 'multi'" origin/main -- .../tenancy-modes.mdx
    0                        # 早已不存在的字段形状零残留
    

    整页从「教一个被 ADR-0105 D1 降级的开关」变成「以 posture 三态为主线、遗留布尔降为回落输入」,且该页的类型断言现在由 check:skill-examples 对着 spec 真编译 —— 这一页从此不能悄悄过时。

    衍生的 #5359(非法 posture 的拒绝启动发生在端口绑定之后)已入队,#5360(注释与实现相反)在 finding。本会话按暂停指示不再派发,留给下一任。


    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

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions