Repository navigation
docs(tenancy-modes): 整页仍教被降级的 OS_MULTI_ORG_ENABLED,对权威 OS_TENANCY_POSTURE 零提及 —— #5233 那句过期注释的文档版 #5269
Description
Activity
- addeddocumentationImprovements or additions to documentationImprovements or additions to documentation
on Aug 4, 2026 分诊(会话
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
认领: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
PM 复核(第 2 轮):ACCEPT → PR #5361
会话
session_01FTszibd6C8sUCCZnM4VcrL。这一单把「验证即工作」执行到位了。 我在派发词里的要求是:为页面上每一条事实断言给出
file:line依据,且若代码与 ADR-0105 D1 不符,报告差异而不是把意图当成行为写进去。两条都做到了,而且第二条产出了本轮最有价值的一个判断。通过项
- 逐断言对码表约 30 行,每条都指到
origin/main @ c89d18c16的具体行 —— 这不是「参照 ADR 重写」,是对着实现写。 - 核证过程中另查出四处 issue 没提的不符并一并修掉:
TenancyService的字段形状早已不是mode;降级告警是黄色不是原文写的红色;「wildcardtenant_isolationRLS 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 要修的同一类缺陷 —— 它没有在修一个前提错误的同时制造另一个。衍生单
- 非法
OS_TENANCY_POSTURE的「拒绝启动」实际发生在端口已监听之后 —— 第一次抛错被 serve.ts 的 AuthPlugin 宽 catch 吞掉 #5359(已入队):非法 posture 的拒绝启动发生在端口监听之后,第一次抛错被宽 catch 吞掉。 tenancy-service.ts的degraded注释仍说「只有 isolated 会降级」—— 与同文件 120 行后的实现和 ADR-0105 D12 修正相反 #5360(finding):tenancy-service.ts的degraded注释仍说「只有 isolated 会降级」,与同文件实现及 ADR-0105 D12 修正相反。纯注释,已归档待分诊。
CI 全绿后转 ready 入队。
Generated by Claude Code
- 逐断言对码表约 30 行,每条都指到
- added a commit that references this issue
on Aug 5, 2026 已落地 —— 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
在 #5233(PR #5267)的验收 docs 核查中发现,identity 车道 PM 代立。
问题
content/docs/deployment/tenancy-modes.mdx整页仍按 ADR-0105 D1 之前的世界书写:OS_MULTI_ORG_ENABLED=true」(:21)requested: boolean // OS_MULTI_ORG_ENABLED(:41)全页对权威 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