⏱️ 本卡正文的原始读数取自同一动作:2026-09-18T11:28Z,树为 origin/main = 43f4766889(⚠️ 下文有一处经 2026-09-18T16:05Z 的更正,已就地标出、原文不删)。由 domain:spec seat 2(座位贴 #18549,session_01JbZnqu8bt6YqfJsr9vaFb3)立。⛔ 未定级、未指派 —— 那是分诊的活。
出处:#18960 / PR #19006 那一轮 dev 的 out_of_scope_findings(他按「越界停手」正确地没碰,dev ⛔ 不 POST /issues)。⭐ 本席逐条重取过,并且量到的比 dev 报的更多一条。
要修的一句话
scripts/tenant-audit-census.mjs 的 renderCountsFile() 写进生成文件的那段散文,用一个已经不存在的机制解释「为什么这个 counts 文件没有登记 merge=os-regen」:
This file is deliberately NOT merge=os-regen: that driver resolves an artefact's gen:/check: scripts in @objectstack/spec only, and these are root-level tooling.
⭐ 事实那一半是对的(该文件确实没登记);⛔ 错的是它给出的理由。
为什么错 —— 两条独立读数,都带对照
① 那个限制在 #13585 就被拿掉了
scripts/git-merge-regen.mjs:769-777 逐字:
* Resolution read `packages/spec/package.json` and nothing else until #13585, which
* made a root-owned artifact unregisterable and said so in a way that pointed at the
* wrong repair …
* - resolution reads the owner's manifest, whichever that is; and
* - the refusal NAMES the manifests it searched …
⇒ #13585(closed)正是「root-owned 无法登记」那张卡,而它已经修好了。散文引的是修好之前的世界。
② 今天树上就有 root-owned 的登记行,而且有两条真的被路由了
scripts/regen-artifacts.mjs 现读:ROOT_OWNER = '@objectstack/spec-monorepo'(:34),ownerDir 把它映到 '.'(git-merge-regen.mjs:935)。登记表里 4 行声明了它:
路径 git check-attr merge
content/docs/permissions/system-context.mdx os-regen ← 真的被路由
scripts/platform-object-tenancy-census.json os-regen ← 真的被路由
packages/sdui-parser/objectui-lockstep.json unspecified
packages/create-objectstack/src/templates/*/package.json unspecified
⭐ 对照:本卡讨论的那个 counts 文件 unspecified
⇒ root-owned 的产物今天既登记得了、也确实被路由着。 散文说的那条不可能性⛔ 不存在。
⭐ 顺带量到的第三处(dev 没报,本席自取)
scripts/git-merge-regen.mjs:834-836 逐字:
* `reconcileScripts` above is green on this tree for the same reason it was green
* before #13585: every row is spec-owned, so it exercises exactly one manifest and
* would keep passing if the loosening were reverted.
⚠️ ⛔ 更正(本席,2026-09-18T16:05Z)—— 下面这句原文的第三个数字是错的,原文保留在此不删:原文写的是「4 行 ROOT_OWNER + 19 行具名包 owner + 41 行取默认值 DEFAULT_OWNER = '@objectstack/spec'」。⭐ 实测不成立:PR #19075 的 dev 顶了回来,本席用登记表自身的结构(import 该模块,按它自己的 ownerOf(entry) = entry.owner ?? DEFAULT_OWNER 分桶)重取,读到的是两张表而非一张 —— REGEN_ARTIFACTS 18 行 = 2 ROOT + 0 具名 + 16 取默认;NOT_DRIVER_MANAGED 33 行 = 2 ROOT + 19 具名 + 12 取默认;两表合计 51 行 = 4 + 19 + 28,每桶之和都与各自总数对得上。⇒ 「4 + 19」是跨两表的数,而「41」(及它蕴含的 64)在任何一把尺子下都不成立。⚠️ 本席在派发词里曾把自己量到的 28 自贬为「量不准」,那也是错的 —— 该文件每一行(含 glob)都把 path: 拼成字面量,没有东西落在那把尺子的半径外。两处都记在这里,原文不删。
⇒ 「every row is spec-owned」今天为假 —— 这一条不受上面的更正影响,反而被加强了:git-merge-regen.mjs --self-test 自己打印「all 36 gen:/check: names resolve in their declared owner(两张 manifest)」,而 PR #19075 的 dev 用一次消融证明了「把放宽改回去,reconcileScripts 会变红」。它正是那段注释用来解释「为什么这条测试仍然绿」的理由。⚠️ 这一处与上面两处同因不同处:都是 #13585 之后没跟上的陈述。
⛔ 本卡不主张的事
与近邻的关系(⛔ 均不折叠)
| 卡 |
为什么不是本条 |
| #13585(closed) |
它是被引的那次修复;本条是「修完之后没跟上的三处陈述」 |
| #18960(open,PR #19006 在飞) |
同一个文件的另一处:那是 docblock 与生成散文自相矛盾,已由 PR #19006 改掉 docblock。⭐ 那一轮刻意没有重述这段理由 —— 正因为它可疑 —— 所以本条是它留下的下一环 |
| #18944(open,同文件) |
普查的引擎门分类规则盲区,与合并属性无关 |
| #18895(open) |
os-regen-merge.sh 的重跑语义,⛔ 不是这段理由 |
查重词
merge=os-regen rationale stale · git-merge-regen reconcileScripts owner manifest · ROOT_OWNER registered artefact routed · #13585 root-owned unregisterable fixed · tenant-audit-census emitted header reason
Generated by Claude Code
⏱️ 本卡正文的原始读数取自同一动作:2026-09-18T11:28Z,树为⚠️ 下文有一处经 2026-09-18T16:05Z 的更正,已就地标出、原文不删)。由
origin/main=43f4766889(domain:specseat 2(座位贴 #18549,session_01JbZnqu8bt6YqfJsr9vaFb3)立。⛔ 未定级、未指派 —— 那是分诊的活。出处:#18960 / PR #19006 那一轮 dev 的
out_of_scope_findings(他按「越界停手」正确地没碰,dev ⛔ 不 POST /issues)。⭐ 本席逐条重取过,并且量到的比 dev 报的更多一条。要修的一句话
scripts/tenant-audit-census.mjs的renderCountsFile()写进生成文件的那段散文,用一个已经不存在的机制解释「为什么这个 counts 文件没有登记merge=os-regen」:⭐ 事实那一半是对的(该文件确实没登记);⛔ 错的是它给出的理由。
为什么错 —— 两条独立读数,都带对照
① 那个限制在 #13585 就被拿掉了
scripts/git-merge-regen.mjs:769-777逐字:⇒ #13585(closed)正是「root-owned 无法登记」那张卡,而它已经修好了。散文引的是修好之前的世界。
② 今天树上就有 root-owned 的登记行,而且有两条真的被路由了
scripts/regen-artifacts.mjs现读:ROOT_OWNER = '@objectstack/spec-monorepo'(:34),ownerDir把它映到'.'(git-merge-regen.mjs:935)。登记表里 4 行声明了它:⇒ root-owned 的产物今天既登记得了、也确实被路由着。 散文说的那条不可能性⛔ 不存在。
⭐ 顺带量到的第三处(dev 没报,本席自取)
scripts/git-merge-regen.mjs:834-836逐字:ROOT_OWNER+ 19 行具名包 owner + 41 行取默认值DEFAULT_OWNER = '@objectstack/spec'」。⭐ 实测不成立:PR #19075 的 dev 顶了回来,本席用登记表自身的结构(import 该模块,按它自己的ownerOf(entry) = entry.owner ?? DEFAULT_OWNER分桶)重取,读到的是两张表而非一张 ——REGEN_ARTIFACTS18 行 = 2 ROOT + 0 具名 + 16 取默认;NOT_DRIVER_MANAGED33 行 = 2 ROOT + 19 具名 + 12 取默认;两表合计 51 行 = 4 + 19 + 28,每桶之和都与各自总数对得上。⇒ 「4 + 19」是跨两表的数,而「41」(及它蕴含的 64)在任何一把尺子下都不成立。path:拼成字面量,没有东西落在那把尺子的半径外。两处都记在这里,原文不删。⇒ 「every row is spec-owned」今天为假 —— 这一条不受上面的更正影响,反而被加强了:⚠️ 这一处与上面两处同因不同处:都是 #13585 之后没跟上的陈述。
git-merge-regen.mjs --self-test自己打印「all 36 gen:/check: names resolve in their declared owner(两张 manifest)」,而 PR #19075 的 dev 用一次消融证明了「把放宽改回去,reconcileScripts会变红」。它正是那段注释用来解释「为什么这条测试仍然绿」的理由。⛔ 本卡不主张的事
merge=os-regen。那是 scripts/tenant-audit-census.mjs states both that its counts file is and is not merge=os-regen #18960 自己刻意排除的邻题(「Whether the two.counts.mdsiblings ought to merge the same way is a separate question」),而且是裁定,⛔ 不是本卡能替谁做的。.gitattributes行。reconcileScripts在今天的 owner 分布下是否还会绿(本席只量了那句解释为假,⛔ 没跑那条测试去看它是否因为别的原因仍然绿)。接手的人应当跑一次并配对照。与近邻的关系(⛔ 均不折叠)
os-regen-merge.sh的重跑语义,⛔ 不是这段理由查重词
merge=os-regen rationale stale·git-merge-regen reconcileScripts owner manifest·ROOT_OWNER registered artefact routed·#13585 root-owned unregisterable fixed·tenant-audit-census emitted header reasonGenerated by Claude Code